本篇内容介绍了“Python怎么封装远程连接的组件”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
#!/usr/bin/env python # coding:utf-8 ''' @author: Ryan Bai(白瑞钧) @license: @contact: brj880719@hotmail.com @file: SSHClient.py @create time: 2017/11/8 18:11 @attention: ssh客户端使用 @desc: ''' import paramiko from paramiko.py3compat import u import time class SSHClient(object): ''' @attention: 关闭 ssh 链接 @author: 白瑞钧 @param ssh: ssh链接 ''' def close(self, ssh): ssh.close() ''' @attention: 创建 ssh 链接 @author: 白瑞钧 @param v_username: 用户名 @param v_password: 密码 @param v_ip: IP @param v_port: 端口号 ''' def sshConnection(self, v_username, v_password, v_ip, v_port=22): # 创建SSH对象 ssh = paramiko.SSHClient() # 把要连接的机器添加到known_hosts文件中 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 连接服务器 ssh.connect(hostname=v_ip, port=v_port, username=v_username, password=v_password) return ssh # endregion ''' @attention: 执行单条命令 @author: 白瑞钧 @param ssh: ssh链接 @param v_cmd: 需要执行的命令 ''' def sshExecByOne(self, ssh, v_cmd): # 执行 stdin, stdout, stderr = ssh.exec_command(v_cmd) result = stdout.read() if not result: result = stderr.read() return result.decode() ''' @attention: 执行命令集 @author: 白瑞钧 @param s: ssh链接 @param l_cmd: 需要执行的命令集 @param exec_wait: 执行命令间隔时间 @param exit_wait: 退出等待时间 ''' def sshExecByMany(self, s, l_cmd, exec_wait, exit_wait): ssh = s.invoke_shell() # 执行 for v_cmd in l_cmd: ssh.send(v_cmd) ssh.send('\n') time.sleep(exec_wait) if v_cmd=='exit': time.sleep(exit_wait) result = u(ssh.recv(9999)) return result if __name__ == '__main__': getClient = SSHClient() ssh = getClient.sshConnection('sys_admin', 'XSW@1qaz', '10.82.28.219') l_cmd = ['sudo su - ', 'su - oracle', 'sqlplus / as sysdba', u'select * from dual;', 'exit', 'df -h', 'exit'] result = getClient.sshExecByMany(ssh, l_cmd, 1, 1) print(result) getClient.close(ssh) # getClient = SSHClient() # ssh = getClient.sshConnection('sys_admin', 'XSW@1qaz', '10.82.28.219') # result = getClient.sshExecByOne(ssh,'pwd') # print(result) # getClient.close(ssh)
“Python怎么封装远程连接的组件”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。