17、Python之paramikomo
阿新 • • 發佈:2018-03-12
comm 連接服務器 對象 文件操作 簡介 decode body linu OS
一、簡介
paramiko是一個基於SSH用於連接遠程服務器並執行相關操作(SSHClient和SFTPClinet,即一個是遠程連接,一個是上傳下載服務),使用該模塊可以對遠程服務器進行命令或文件操作,值得一說的是,fabric和ansible內部的遠程管理就是使用的paramiko來現實。
二、準備
由於paramiko模塊不是系統自帶的模塊,所以需要引入,在pycharm中引入paramiko模塊的步驟如下:
三、使用paramiko連接遠程服務器
1、基於用戶名和密碼的連接
1 import paramiko 2 #創建SSH對象 3 ssh = paramiko.SSHClient()View Code4 # 允許連接不在know_hosts文件中的主機 5 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 6 #連接服務器 7 ssh.connect(hostname="192.168.172.132",port=22,username="root",password="123") 8 stdin,stdout,stderr = ssh.exec_command("ls") 9 result = stdout.read() 10 err_result = stderr.read() 11 if result: 12print(result.decode("utf-8")) 13 elif err_result: 14 print(err_result.decode())
2、基於公鑰秘鑰的連接
1、生成公鑰秘鑰:在linux中使用命令生成公鑰和私鑰。命令生成的公鑰和私鑰在目錄下面,將私鑰的文件拷貝到客戶端,然後就可以通過公鑰私鑰的方式連接服務器了,代碼如下:
1 import paramiko 2 private_key = paramiko.RSAKey.from_private_key_file("rsa.txt") #讀取私鑰 3 ssh = paramiko.SSHClient()View Code4 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 5 ssh.connect(hostname="192.168.172.132",port=22,username="root",pkey=private_key) 6 stdin,stdout,stderr = ssh.exec_command("df") 7 result = stdout.read() 8 print(result.decode()) 9 ssh.close()
3、遠程文件上傳和下載
1 import paramiko 2 3 transport = paramiko.Transport(("192.168.172.132",22)) 4 transport.connect(username="root",password="123") 5 sftp = paramiko.SFTPClient.from_transport(transport) 6 # sftp.put("F:/key.txt","/temp") #上傳 7 sftp.get("/home/gwx/.ssh/id_rsa","F:/mywork/ts.txt")#下載 8 transport.close()View Code
17、Python之paramikomo