您好,登錄后才能下訂單哦!
本篇內容介紹了“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進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。