国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > Linux > 正文

python通過SSH登陸linux并操作的實現(xiàn)

2024-08-28 00:02:40
字體:
供稿:網(wǎng)友

用的昨天剛接觸到的庫,在windows下通過paramiko來登錄linux系統(tǒng)并執(zhí)行了幾個命令,基本算是初試成功,后面會接著學習的。

代碼:

>>> import paramiko>>> ssh = paramiko.SSHClient()>>> ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())>>> ssh.connect('10.104.6.8',username = 'xiaopeng',password='******')>>> cmd = 'cd'  #進入用戶目錄home>>> stdin,stdout,stderr = ssh.exec_command(cmd)>>> cmd = 'ls >test' #管道,ls命名的輸出到文件test里面>>> stdin,stdout,stderr = ssh.exec_command(cmd)>>> cmd = 'cat test' # 顯示test的內(nèi)容,即ls命名的結(jié)果>>> stdin,stdout,stderr = ssh.exec_command(cmd)>>> print stdout.readlines()  #結(jié)果 漢字用的字符顯示['code/n', 'Desktop/n', 'order.cpp/n', 'python/n', 'test/n', '/xe5/x85/xac/xe5/x85/xb1/xe7/x9a/x84/n', '/xe6/xa8/xa1/xe6/x9d/xbf/n', '/xe8/xa7/x86/xe9/xa2/x91/n', '/xe5/x9b/xbe/xe7/x89/x87/n', '/xe6/x96/x87/xe6/xa1/xa3/n', '/xe4/xb8/x8b/xe8/xbd/xbd/n', '/xe9/x9f/xb3/xe4/xb9/x90/n']

這里我們都會發(fā)現(xiàn),使用exec_command('cd dirname')時并不會切換目錄,execute_command() 是a single session,每次執(zhí)行完后都要回到缺省目錄。所以可以 .execute_command('cd /var; pwd')。

python里面的paramiko模塊,用這個實現(xiàn)ssh登錄更加簡單。看下面的代碼:

#-*- 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!']#你要執(zhí)行的命令列表   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() 

上面的程序還是有些技巧的:

1.利用多線程,同時發(fā)出登錄請求,同時去連接電腦,這樣速度快很多,我試了一下,如果不用多線程,直接一個一個挨著執(zhí)行的話,大約5~10秒鐘才能對一臺電腦操作完,具體時間要根據(jù)命令的來決定,如果是軟件安裝或者卸載時間要更長一些。這樣下來怎么也要一二十分鐘,用多線程后就快多了,所有的命令執(zhí)行完用了不到2分鐘!

2.最好用root用戶登錄,因為安裝或者卸載軟件的時候如果用普通用戶又會提示輸入密碼,這樣又多了一次交互,處理起來就比較麻煩!安裝軟件時apt-get install xxx 最好加上“-y”參數(shù),因為有時安裝或刪除軟件時提示是否繼續(xù)安裝或卸載,這又是一次自動交互!加上那個參數(shù)后就沒有人機交互了。

3.循環(huán)時循環(huán)所有ip,因為計算機的ip是路由器自動分配的,保險起見,最好全部都執(zhí)行,保證沒有遺漏的主機

4.遠端執(zhí)行命令時如果有交互,可以這樣用 stdin.write("Y")來完成交互,“Y”就是輸入“Y”。

5.把所有的命令放到一個列表里面,遍歷列表可以依次執(zhí)行列表里面的命令

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 华池县| 敦煌市| 林州市| 盘锦市| 荥阳市| 全南县| 万全县| 胶州市| 古丈县| 翁源县| 广安市| 合阳县| 鹤峰县| 宜兴市| 通渭县| 鄂伦春自治旗| 灵寿县| 稻城县| 凤庆县| 宜宾市| 临泉县| 德昌县| 霸州市| 孟津县| 阿巴嘎旗| 天峨县| 江西省| 东乌珠穆沁旗| 乐陵市| 梧州市| 辉南县| 山西省| 巫山县| 乐安县| 明星| 梁山县| 攀枝花市| 梅河口市| 浠水县| 如皋市| 包头市|