1. 程式人生 > >17、Python之paramikomo

17、Python之paramikomo

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()
4 # 允許連接不在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: 12
print(result.decode("utf-8")) 13 elif err_result: 14 print(err_result.decode())
View Code

2、基於公鑰秘鑰的連接

1、生成公鑰秘鑰:在linux中使用命令技術分享圖片生成公鑰和私鑰。命令生成的公鑰和私鑰在目錄技術分享圖片下面,將私鑰的文件拷貝到客戶端,然後就可以通過公鑰私鑰的方式連接服務器了,代碼如下:

技術分享圖片
1 import paramiko
2 private_key = paramiko.RSAKey.from_private_key_file("rsa.txt") #讀取私鑰
3 ssh = paramiko.SSHClient()
4 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()
View Code

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