自動化測試學習:使用python庫Paramiko實現遠端伺服器上傳和下載

博為峰網校發表於2022-01-12

前言

測試過程中經常會遇到需要將本地的檔案上傳到遠端伺服器上,或者需要將伺服器上的檔案拉到本地進行操作,以前安靜經常會用到xftp工具。今天安靜介紹一種python庫Paramiko,可以幫助我們透過程式碼的方式進行完成對遠端伺服器的上傳和下載操作,也可以進行對遠端伺服器輸入操作命令。 加我VX:atstudy-js 回覆“測試”,進入 自動化測試學習交流群~~

Paramiko

Paramiko屬於python的一個第三方庫,可以遠端連線Linux伺服器,進行透過python進行對Linux進行操作,可以實現進行對遠端伺服器進行下載和上傳檔案操作。

安裝

既然是第三方庫,我們可以透過pip進行安裝:

pip install paramiko

基本使用

Paramiko庫主要包含兩個部分:SSHClient和SFTPClient

SSHClient:表示類似於Linux的ssh命令,我們可以透過SSHClient模組對遠端伺服器執行一些命令操作(Linux)。

SFTPClient:表示類似於SFTP工具,可以實現對遠端伺服器的檔案進行上傳和下載。

SSHClient

這裡安靜透過SSHClient進行對遠端伺服器上進行連線,並執行Linux命令,首先進行對paramiko下的SSHClient完成例項化,在使用SSHclient下的connet進行連線,後續進行操作一些命令:

import paramiko

# 進行對paramiko方法下的SSHclient進行例項化

ssh = paramiko.SSHClient()

# 儲存伺服器金鑰

ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

# 輸入伺服器地址,賬戶名,密碼

ssh.connect(hostname='xxxx', port=22,username='root',password='xxxxxx')

# 返回了三個資料,第一個是輸入命令,第2個是命令返回的結果,第3個是命令錯誤時返回的結果

stdin, stdout, stderr = ssh.exec_command('pwd;lll')

# 返回了當前的路徑結果,如果錯誤則返回為空

print(stdout.read().decode('utf-8'))

# 返回錯誤的執行結果,如果正確則返回為空

print(stderr.read().decode('utf-8'))

透過執行程式碼操作後,就很清楚的看到我們已經完成了對linux命令的輸入,返回了正確的資訊和錯誤的資訊。

SFTPClient

sftpclient前面也介紹了主要是類似於xftp的工具,可以幫助我們實現遠端檔案的上傳,下載。其實用方法也是一樣的。先進行例項化,然後透過登入到伺服器,透過建立sftp工具然後進行完成檔案的上傳和下載。

上傳檔案

安靜這裡先編寫一個txt檔案,然後將這個檔案透過程式碼的方法傳入到伺服器上。

這裡透過的上傳方法是put(伺服器路徑,本地路徑):

import paramiko

# 對paramiko方法下的SSHclient進行例項化

ssh = paramiko.SSHClient()

# 儲存伺服器金鑰

ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

# 輸入伺服器地址,賬戶名,密碼

ssh.connect(hostname='xxxxx', port=22, username='root',password='xxxxxx')

# 建立sftp客戶端

sftp = paramiko.SFTPClient.from_transport(ssh.get_transport())

# 本地路徑

aaa = "anjing.txt"

# 遠端路徑

bbb = "/home/anjing/222/anjing.txt"

sftp.put(aaa, bbb)

透過執行程式碼後,我們發現伺服器上已經存在了剛剛上傳的檔案。

我們透過進行將這個文字內容進行修改,然後將檔案傳到我們本地檔案中透過vi命令進行編輯。

下載這裡使用的方法是get(伺服器路徑,本地路徑):

import paramiko

# 對paramiko方法下的SSHclient進行例項化

ssh = paramiko.SSHClient()

# 儲存伺服器金鑰

ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

# 輸入伺服器地址,賬戶名,密碼

ssh.connect(hostname='xxxxx', port=22, username='root',password='xxxxxx')

# 建立sftp客戶端

sftp = paramiko.SFTPClient.from_transport(ssh.get_transport())

# 遠端路徑

bbb = "/home/anjing/2

# 下載檔案

sftp.get(bbb, r'E:\web\anjing_01.txt')

透過執行程式碼後發現我們已經成功的將伺服器上修改過的檔案下載到了本地並修改了名稱。

總結

安靜透過小小的例子簡單的介紹了paramiko如何對檔案上傳下載和執行linux的命令操作。對於我們測試來言,無論是日常測試中,還是在編寫自動化中,又遇到需要伺服器操作的時候,都可以嘗試下,一來可以在領導面前穩穩的裝一波,二來也可以增加我們對python知識的提高。好了,感謝您的閱讀,希望對您有所幫助。

最後:

可以我的 個人V:atstudy-js,可以免費領取一份10G軟體測試工程師面試寶典文件資料。以及相對應的影片學習教程免費分享!,其中包括了有基礎知識、Linux必備、Mysql資料庫、抓包工具、介面測試工具、測試進階-Python程式設計、Web自動化測試、APP自動化測試、介面自動化測試、測試高階持續整合、測試架構開發測試框架、效能測試等。

這些測試資料,對於做【軟體測試】的朋友來說應該是最全面最完整的備戰倉庫,這個倉庫也陪伴我走過了最艱難的路程,希望也能幫助到你!

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31407649/viewspace-2851944/,如需轉載,請註明出處,否則將追究法律責任。

相關文章