Python中的模塊--SSH相關模塊

Python中使用SSH需要用到OpenSSH,而OpenSSH依賴于paramiko模塊,而paramiko模塊又依賴于pycrypto模塊,因此要在Python中使用SSH,則需要先安裝模塊順序是: pycrypto -> paramiko

我是直接使用pip安裝:

下面是網上的一些栗子:

栗子一:執行遠程命令:

import paramiko 
#新建一個ssh客戶端對象
client = paramiko.SSHClient() 
# 設置成默認自動接受密鑰
client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 
#連接遠程主機
client.connect('IP', 22, username='root', password='password', timeout=4) 
#在遠程主機執行shell命令
stdin, stdout, stderr = client.exec_command('ls -l') 
#讀取執行結果
for std in stdout.readlines(): 
    print (std,)
client.close()

栗子二:上傳本地文件至遠程主機

import paramiko 
t = paramiko.Transport(("IP",22)) 
t.connect(username = "username", password = "password") 
sftp = paramiko.SFTPClient.from_transport(t) 
remotepath='/tmp/test.txt' 
localpath='/tmp/test.txt' 
sftp.put(localpath,remotepath) 
t.close()

栗子三:下載遠程主機文件到本地

import paramiko 
t = paramiko.Transport(("IP",22)) 
t.connect(username = "username", password = "password") 
sftp = paramiko.SFTPClient.from_transport(t) 
remotepath='/tmp/test.txt' 
localpath='/tmp/test.txt' 
sftp.get(remotepath, localpath) 
t.close()

栗子四:
通常需要對多個服務器或者虛擬機進行管理,可以采用批量的方式進行。

import paramiko  
import threading  
def ssh2(ip,username,passwd,cmd):  
    try:  
        ssh = paramiko.SSHClient()  
        ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())  
        ssh.connect(ip,22,username,passwd,timeout=5)  
        for m in cmd:  
            stdin, stdout, stderr = ssh.exec_command(m)  
            out = stdout.readlines()  
            for o in out:  
                print (o,)  #屏幕輸出
        print ('%s\tOK\n'%(ip))  
        ssh.close()  
    except :  
        print ('%s\tError\n'%(ip))  
if __name__=='__main__':  
    cmd = ['echo hello!']#需要執行的命令列表  
    username = "root"  #用戶名  
    passwd = "root"    #密碼  
    threads = []   #多線程  
    print ("Begin excute......") 
    for i in range(1,254):  
        ip = '192.168.1.'+str(i)  
        a=threading.Thread(target=ssh2,args=(ip,username,passwd,cmd))   
        a.start() 

最后一個栗子,如果命令較少,pssh更適合。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,967評論 19 139
  • linux資料總章2.1 1.0寫的不好抱歉 但是2.0已經改了很多 但是錯誤還是無法避免 以后資料會慢慢更新 大...
    數據革命閱讀 12,237評論 2 33
  • paramiko是用python語言寫的一個模塊,遵循SSH2協議,支持以加密和認證的方式,進行遠程服務器的連接。...
    超能_閱讀 20,207評論 2 16
  • 一、Nagios簡介 Nagios是一款開源的電腦系統和網絡監視工具,能有效監控Windows、Linux和Uni...
    1b3bd36d9d21閱讀 8,224評論 3 13
  • 有必要先來了解什么是SSH和什么是SSH key。 SSH Secure Shell (SSH) 是一個允許兩臺電...
    faner閱讀 47,601評論 1 48