Python實現ssh訪問服務器

windows下可以通過putty以ssh方式連接linux主機,但是實際使用putty會被亂碼困擾。

在這裏利用python,小試牛刀,寫一個能利用ssh協議訪問服務器的例子。

1.擴展模塊:

需要從網上下載這三個擴展模塊:

PyCrypto下載地址:https://www.dlitz.net/software/pycrypto/

paramiko下載地址:http://www.lag.net/paramiko/

edssa下載地址:https://pypi.python.org/pypi/ecdsa/0.9 

上面有些軟件可能需要用svn客戶端進行下載比較方便,因爲放在了github 託管了

不過很可惜 我上面那個地址下載的PyCrypto折騰半天,可能是我windows 7 x64位系統的原因,沒有成功

最後是在http://www.voidspace.org.uk/downloads/pycrypto26/這個地方找到了相應的exe文件,安裝成功了,PyCrypto挺重要,因爲只有安裝成功pycrypto,才能安裝好paramiko。

這些順利完成後,用import paramiko試試,可以說明安裝成功了。

至於代碼其實也是在網上找來的,測試一下

#-*- coding: utf-8 -*-  
#!/usr/bin/python   
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)  
#           stdin.write("Y")   #簡單交互,輸入 ‘Y’   
            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 = ['cal','echo hello!']#你要執行的命令列表  
    username = ""  #用戶名  
    passwd = ""    #密碼  
    threads = []   #多線程  
    print "Begin......" 
    for i in range(1,254):  
        ip = '192.168.1.'+str(i)  
        a=threading.Thread(target=ssh2,args=(ip,username,passwd,cmd))   
        a.start() 

發佈了27 篇原創文章 · 獲贊 5 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章