您好,登錄后才能下訂單哦!
本篇內(nèi)容介紹了“Python怎么封裝遠(yuǎn)程連接的組件”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
#!/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: 關(guān)閉 ssh 鏈接 @author: 白瑞鈞 @param ssh: ssh鏈接 ''' def close(self, ssh): ssh.close() ''' @attention: 創(chuàng)建 ssh 鏈接 @author: 白瑞鈞 @param v_username: 用戶名 @param v_password: 密碼 @param v_ip: IP @param v_port: 端口號(hào) ''' def sshConnection(self, v_username, v_password, v_ip, v_port=22): # 創(chuàng)建SSH對(duì)象 ssh = paramiko.SSHClient() # 把要連接的機(jī)器添加到known_hosts文件中 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 連接服務(wù)器 ssh.connect(hostname=v_ip, port=v_port, username=v_username, password=v_password) return ssh # endregion ''' @attention: 執(zhí)行單條命令 @author: 白瑞鈞 @param ssh: ssh鏈接 @param v_cmd: 需要執(zhí)行的命令 ''' def sshExecByOne(self, ssh, v_cmd): # 執(zhí)行 stdin, stdout, stderr = ssh.exec_command(v_cmd) result = stdout.read() if not result: result = stderr.read() return result.decode() ''' @attention: 執(zhí)行命令集 @author: 白瑞鈞 @param s: ssh鏈接 @param l_cmd: 需要執(zhí)行的命令集 @param exec_wait: 執(zhí)行命令間隔時(shí)間 @param exit_wait: 退出等待時(shí)間 ''' def sshExecByMany(self, s, l_cmd, exec_wait, exit_wait): ssh = s.invoke_shell() # 執(zhí)行 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怎么封裝遠(yuǎn)程連接的組件”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。