Python中paramiko 模組的用法

嗨学编程發表於2024-04-13

paramiko 是一個用 Python 語言編寫的、遵循 SSH2 協議、支援以加密和認證方式進行連線遠端伺服器的模組。改模組可以對遠端伺服器進行一些命令或檔案操作。

1.安裝

使用 pip3 安裝 paramiko 模組

pip3 install paramiko

連線遠端伺服器

paramiko 模組連線遠端伺服器可以使用遠端伺服器的使用者名稱、密碼登入

import paramiko

# 建立一個SSHClient物件
ssh = paramiko.SSHClient()
# 將信任的主機加到 host_allow 列表
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 連線伺服器
ssh.connect("伺服器IP地址", "伺服器埠號", "使用者名稱", "密碼")

2.使用命令

在登入遠端伺服器後,利用 paramiko 模組可以使用 shell 命令操作遠端伺服器,比如:df 命令、pwd 命令、cat 命令等等...

# 列印磁碟情況
# 執行df命令,結果放到 dfout 中,如果有錯誤將放到 dferr 中
dfout, dferr = ssh.exec_command('df')
print(dfout.read().decode('utf-8'))

# 使用cd、cat命令檢視檔案內容
# paramiko.txt檔案為/root/data/paramiko.txt
catin, catout,caterr = ssh.exec_command('cd data;cat paramiko.txt')
print(catin.read().decode('utf-8'))

在 exec_command 函式中,exec_command 執行的是單個會話,執行完成後會回到登入的預設目錄,多個命令需要 命令1;命令2;命令3 的寫法

3.sftp上傳和下載檔案

import paramiko

transport = paramiko.Transport(("伺服器IP地址",伺服器埠號))
transport.connect(username = "使用者名稱", password = "密碼")
sftp = paramiko.SFTPClient.from_transport(transport)
# 從遠端伺服器下載檔案
# 遠端伺服器檔案路徑為/data/paramiko.txt
sftp.get('/data/paramiko.txt', 'paramiko.txt', print("下載完成!"))
# 從本地上傳檔案到遠端伺服器
sftp.put('upload_paramiko.txt', '/data/upload_paramiko.txt', print("上傳完成!"))

4.伺服器檔案修改內容

sftp 物件可以線上修改遠端伺服器上檔案的內容

import paramiko

# 登入遠端伺服器
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect("伺服器IP地址",,"伺服器埠號","使用者名稱", "密碼", timeout=5)
sftp = client.open_sftp()
# 遠端伺服器檔案地址為/data/paramiko.txt
remoteFile = sftp.open("/data/paramiko.txt", 'a')
remoteFile.write("\n");
remoteFile.write("這裡是追加的內容!");
remoteFile.close()
sftp.close()

5.查詢檔案

使用 sftp 物件獲取遠端伺服器上的檔案列表

import paramiko

#學習中遇到問題沒人解答?小編建立了一個Python學習交流群:153708845
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect("伺服器IP地址",,"伺服器埠號","使用者名稱", "密碼", timeout=5)
sftp = client.open_sftp()
for fileName in sftp.listdir("/root/data"):
    if fileName.endswith(".txt"):
        print(fileName)
sftp.close()

6.結語

以上是 paramiko 模組的基本操作,學會以上內容後在多個遠端伺服器的情況下,可以快速、便捷的操作伺服器內容

相關文章