python實現遠程服務器的操作


前言

測試過程中經常會遇到需要將本地的文件上傳到遠程服務器上,或者需要將服務器上的文件拉到本地就行操作,以前安靜經常會用到xftp工具。今天安靜介紹一種python庫Paramiko,可以幫助我們通過代碼的方式進行完成對遠程服務器的上傳和下載操作。也可以進行對遠程服務器輸入操作命令。

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知識的提高。好了,感謝您的閱讀,希望對您有所幫助。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM