Python怎么封裝SSHClient.py

這篇文章主要講解了“Python怎么封裝SSHClient.py”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“Python怎么封裝SSHClient.py”吧!

網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)!專注于網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、成都微信小程序、集團企業(yè)網(wǎng)站建設(shè)等服務(wù)項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了柘榮免費建站歡迎大家使用!

1、為了更方便采集信息系統(tǒng)以及數(shù)據(jù)庫的信息,我做了該組件

2、為了讓語句執(zhí)行更順暢,位置不發(fā)生錯亂,暫時采用time.sleep()的方式解決

  1. #!/usr/bin/env python

  2. # coding:utf-8

  3. '''

  4. @author: Ryan Bai(白瑞鈞)

  5. @license:

  6. @contact: brj880719@hotmail.com

  7. @file: SSHClient.py

  8. @create time: 2017/11/8 18:11

  9. @desc:

  10. '''

  11. import paramiko

  12. from paramiko.py3compat import u

  13. import time

  14. '''

  15. @attention: : ssh客戶端使用

  16. @author: 白瑞鈞

  17. @param date:

  18. '''

  19. class SSHClient(object):

  20.     '''

  21.     @attention: 關(guān)閉 ssh 鏈接

  22.     @author: 白瑞鈞

  23.     @param ssh: ssh鏈接

  24.     '''

  25.     def close(self, ssh):

  26.         ssh.close()

  27.     '''

  28.     @attention: 創(chuàng)建 ssh 鏈接

  29.     @author: 白瑞鈞

  30.     @param v_username: 用戶名

  31.     @param v_password: 密碼

  32.     @param v_ip: IP

  33.     @param v_port: 端口號

  34.     '''

  35.     def sshConnection(self, v_username, v_password, v_ip, v_port=22):

  36.         # 創(chuàng)建SSH對象

  37.         ssh = paramiko.SSHClient()

  38.         # 把要連接的機器添加到known_hosts文件中

  39.         ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

  40.         # 連接服務(wù)器

  41.         ssh.connect(hostname=v_ip, port=v_port, username=v_username, password=v_password)

  42.         return ssh

  43.     # endregion

  44.     '''

  45.     @attention: 執(zhí)行單條命令

  46.     @author: 白瑞鈞

  47.     @param ssh: ssh鏈接

  48.     @param v_cmd: 需要執(zhí)行的命令

  49.     '''

  50.     def sshExecByOne(self, ssh, v_cmd):

  51.         # 執(zhí)行

  52.         stdin, stdout, stderr = ssh.exec_command(v_cmd)

  53.         result = stdout.read()

  54.         

  55.         if not result:

  56.             result = stderr.read()

  57.         return result.decode()

  58.     '''

  59.     @attention: 執(zhí)行命令集

  60.     @author: 白瑞鈞

  61.     @param ssh: ssh鏈接

  62.     @param l_cmd: 需要執(zhí)行的命令集

  63.     @param exec_wait: 執(zhí)行命令間隔時間

  64.     @param exit_wait: 退出等待時間

  65.     '''

  66.     def sshExecByMany(self, s, l_cmd, exec_wait, exit_wait):

  67.         ssh = s.invoke_shell()

  68.         # 執(zhí)行

  69.         for v_cmd in l_cmd:

  70.             ssh.send(v_cmd)

  71.             ssh.send('\n')

  72.             time.sleep(exec_wait)

  73.             if v_cmd=='exit':

  74.                 time.sleep(exit_wait)

  75.         result = u(ssh.recv(9999))

  76.         return result

  77. if __name__ == '__main__':

  78.     getClient = SSHClient()

  79.     ssh = getClient.sshConnection('sys_admin', 'XSW@1qaz', '10.82.28.219')

  80.     l_cmd = ['sudo su - ',

  81.              'su - oracle',

  82.             'sqlplus / as sysdba',

  83.             u'select * from dual;',

  84.             'exit',

  85.              'df -h',

  86.              'exit']

  87.     result = getClient.sshExecByMany(ssh, l_cmd, 1, 1)

  88.     print(result)

  89.     getClient.close(ssh)

  90.     # getClient = SSHClient()

  91.     # ssh = getClient.sshConnection('sys_admin', 'XSW@1qaz', '10.82.28.219')

  92.     # result = getClient.sshExecByOne(ssh,'pwd')

  93.     # print(result)

  94.     # getClient.close(ssh)

感謝各位的閱讀,以上就是“Python怎么封裝SSHClient.py”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對Python怎么封裝SSHClient.py這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!

網(wǎng)頁題目:Python怎么封裝SSHClient.py
地址分享:http://muchs.cn/article8/pdpiip.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)頁設(shè)計公司、面包屑導(dǎo)航、云服務(wù)器關(guān)鍵詞優(yōu)化虛擬主機

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)