python的paramiko模塊實現(xiàn)遠程控制和傳輸示例
本文介紹了python的paramiko模塊實現(xiàn)遠程控制和傳輸示例,分享給大家,具體如下:
1 安裝
sudo pip install paramiko
2 ssh實現(xiàn)遠程控制
#LINUX下執(zhí)行shell ssh username@ip #輸入密碼后就可以對遠程機器進行操作 ssh username@ip command #輸入密碼后遠程機器就執(zhí)行command
ssh運行后,想退出,可以kill掉ssh進程。
3 paramiko實現(xiàn)ssh
import paramiko hostname = '10.1.111.111' username = 'root' password = '111111' port = 22 #整數(shù)不是字符串 paramiko.util.log_to_file('paramiko.log') ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) #允許連接不在know_hosts文件中的主機 ssh.connect(hostname=hostname,port=port,username=username,password=password) stdin, stdout, stderr = ssh.exec_command("ls") #遠程執(zhí)行shell命令 print(stdout.readlines()) #輸出回顯結(jié)果 ssh.close()
exec_command命令,以分號;分隔表示先后執(zhí)行兩個命令;可以傳入多個參數(shù); exec_command為單個會話,執(zhí)行完成之后會回到登錄時的缺省目錄,如下:
a='~/Videos' b='aaa' ssh.exec_command('cd %s;mkdir %s'%(a,b)) #aaa在a目錄下 ssh.exec_command('mkdir aaa') #aaa在缺省目錄下
遠端執(zhí)行命令時如果有交互,可以這樣用 stdin.write(“”)來完成。
注意:
(1)sudo后要加-S,表示從stdin接收密碼;
(2)stdin.write(‘password\n')最后要加\n作為命令的結(jié)束,否則服務(wù)器一直等待;
(3) flush()寫入的緩沖( flush() any buffer you're writing to )
stdin, stdout, stderr = ssh.exec_command('sudo -S ls') stdin.write('password\n') stdin.flush()
可以利用多進程或線程可以批量執(zhí)行命令:
import paramiko import threading def ssh_cmd(ip,port,username,passwd,cmd): ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.connect(ip,port,username,passwd) for m in cmd: stdin, stdout, stderr = ssh.exec_command(m) print(stdout.readlines()) ssh.close() if __name__=='__main__': cmd = ['ls','ifconfig'] a=threading.Thread(target=ssh_cmd,args=(ip,port,username,passwd,cmd)) a.start() a.join()
4 遠程傳輸文件
scp從本地服務(wù)器復制到遠程服務(wù)器
scp local_file remote_username@remote_ip:remote_file
指定了用戶名,命令執(zhí)行后需要輸入用戶密碼;如果不指定用戶名,命令執(zhí)行后需要輸入用戶名和密碼; 從遠處復制文件到本地
scp remote_username@remote_ip:remote_file local_file
5 paramiko實現(xiàn)遠程傳輸文件
新建一個SFTPClient對象,該對象復用之前的SSH連接,因此,我們使用sftp傳輸文件時,不需要再次進行用戶認證。實現(xiàn)文件
上傳:
sftp = paramiko.SFTPClient.from_transport(ssh.get_transport()) #sftp = ssh.open_sftp() #兩者選其一即可 sftp.put('bbb.c','aaa.c') #文件上傳并重命名 sftp.close()
或者以下實現(xiàn)文件上傳和下載:
import paramiko t=paramiko.Transport((hostname,port)) t.connect(username=username,password=password) sftp = paramiko.SFTPClient.from_transport(t) sftp.put('bbb.c','aaa.c') #文件上傳并重命名 sftp.get('m.py', 'mm.py')#文件下載并重命名 t.close()
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
python3調(diào)用windows dos命令的例子
今天小編就為大家分享一篇python3調(diào)用windows dos命令的例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-08-08Python中json.dumps()函數(shù)使用和示例
這篇文章主要介紹了Python中json.dumps()函數(shù)使用和示例,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-03-03python實現(xiàn)分析apache和nginx日志文件并輸出訪客ip列表的方法
這篇文章主要介紹了python實現(xiàn)分析apache和nginx日志文件并輸出訪客ip列表的方法,涉及Python操作日志文件的技巧,非常具有實用價值,需要的朋友可以參考下2015-04-04python目錄操作之python遍歷文件夾后將結(jié)果存儲為xml
需求是獲取服務(wù)器某個目錄下的某些類型的文件,考慮到服務(wù)器即有Linux、又有Windows,所以寫了一個Python小程序來完成這項工作,大家參考使用吧2014-01-01python中tkinter窗口位置\坐標\大小等實現(xiàn)示例
這篇文章主要介紹了python中tkinter窗口位置\坐標\大小等實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-07-07