基于paramiko的一个类库
来源:互联网 发布:linux命令执行过程 编辑:程序博客网 时间:2024/06/01 09:19
# -*- coding:utf-8 -*-import paramikoimport timeimport sysclass Connect: def __init__(self, host, user, pwd, port=22): self.host = host self.user = user self.pwd = pwd self.port = port self.recv_buffer = 65535 self.EOF_list = [] self.is_connected = False def open_connect(self, timeout=10): try: self.ssh_sock = paramiko.Transport(self.host, self.port) self.ssh_sock.connect(username=self.user, password=self.pwd) self.handle = self.ssh_sock.open_session() self.handle.settimeout(timeout) self.handle.get_pty() self.handle.invoke_shell() self.is_connected = True time.sleep(5) if self.handle.recv_ready(): rsp = self.handle.recv(self.recv_buffer) if 'login' in rsp: print('Login succeed!') sys.stdout.write(rsp) self.EOF_list.append(rsp.split('\n')[-1].split()[0]) except Exception, e: print('ssh Open Error: %s' % e) def close_connect(self): if self.is_connected: try: self.handle.close() self.ssh_sock.close() self.is_connected = False except Exception, e: self.is_connected = False print('ssh Close Error: %s' % e) def send_cmd(self, cmd, timeout=10): if self.is_connected: try: startTime = time.time() self.handle.settimeout(timeout) self.handle.send('%s\r' % cmd) rsp = '' brk_flag = False add_flag = False while time.time() < startTime + timeout: time.sleep(0.5) if self.handle.recv_ready(): rsp = rsp + self.handle.recv(self.recv_buffer) for eof in self.EOF_list: if rsp.rfind(eof) > rsp.rfind('\n'): brk_flag = True add_flag = False break else: add_flag = True if brk_flag: break if add_flag: lines = rsp.split('\n') if lines: last_line = lines[-1].split() if last_line: if last_line[0]: self.EOF_list.append(last_line[0]) sys.stdout.write(rsp) return rsp except Exception, e: print('ssh Cmd Error: %s' % e) def send_cmd_expect(self, cmd, expect, timeout=10): if self.is_connected: rsp = self.send_cmd(cmd, timeout) if rsp: if str(expect) in rsp: return True else: return False
阅读全文
0 0
- 基于paramiko的一个类库
- Python+paramiko基于配置文件的批量主机管理
- import paramiko时一个AttributeError错误的解决
- import paramiko时一个AttributeError错误的解决
- paramiko模块的使用
- paramiko遇到的问题
- paramiko
- paramiko
- paramiko
- paramiko
- python安装paramiko库的最完整步骤
- 导入paramiko库时报 UnicodeDecodeError 错误的解决方案
- 关于paramiko的windows安装
- paramiko的安装与使用
- paramiko的安装与使用
- paramiko的安装与使用
- paramiko的安装与使用
- paramiko的安装与使用
- C++之复合类型
- NIO 实例demo-Server
- 再谈面向对象
- 实践问题解决方案列表
- 数据结构之(一)Hash(散列)
- 基于paramiko的一个类库
- 第6天
- thinkphp的几种跳转方法
- 【跟着stackoverflow学Pandas】add one row in a pandas.DataFrame -DataFrame添加行
- Pytorch简介
- Codeforces
- 2017.8.5
- HDUOJ 1004 Let the Balloon Rise(map容器)
- 【hautoj 1283】: YK的书架 【打表找规律】