這篇文章主要介紹了使用python遠程操作linux過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
在云服務測試中,往往需要我們進入云服務內容進行相關內容的測試。這測試可以使用平臺自身的noVNC、外部輔助xshell等工具連接到云服務內部進行測試。
但是在如此反復的測試操作中,就需要用到自動化測試方法去解決這方面的需求。
在python中我們可以通過第三方庫paramiko,對linux的云服務器進行操作。
如下命令先行安裝
pip install paramiko
paramiko包含兩個核心組件:SSHClient和SFTPClient。
SSHClient的作用類似于Linux的ssh命令,是對SSH會話的封裝,該類封裝了傳輸(Transport),通道(Channel)及SFTPClient建立的方法(open_sftp),通常用于執行遠程命令。
SFTPClient的作用類似與Linux的sftp命令,是對SFTP客戶端的封裝,用以實現遠程文件操作,如文件上傳、下載、修改文件權限等操作。
Paramiko中的幾個基礎名詞:
常用參數
設置連接的遠程主機沒有本地主機密鑰或HostKeys對象時的策略:
利用SSHClient對象的open_sftp()方法,可以直接返回一個基于當前連接的sftp對象,可以進行文件的上傳等操作。
sftp = client.open_sftp()
sftp.put('test.txt','text.txt')
SSHClient常用的方法舉例
import paramiko
# 實例化SSHClient
client = paramiko.SSHClient()
# 自動添加策略,保存服務器的主機名和密鑰信息,如果不添加,那么不再本地know_hosts文件中記錄的主機將無法連接
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 連接SSH服務端,以用戶名和密碼進行認證
client.connect(hostname='192.168.1.105', port=22, username='root', password='123456')
# 打開一個Channel并執行命令
stdin, stdout, stderr = client.exec_command('df -h ') # stdout 為正確輸出,stderr為錯誤輸出,同時是有1個變量有值
# 打印執行結果
print(stdout.read().decode('utf-8'))
# 關閉SSHClient
client.close()
簡易封裝批量處理命令
import paramiko class Paramiko: def __init__(self, ip, user, passwd, port): self.user = user self.ip = ip self.passwd = passwd self.port = port
# 登錄要測試的主機(linux主機)
def type_login_root(self):
self.ssh = paramiko.SSHClient()
self.ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
self.ssh.connect(self.ip, self.port, self.user, self.passwd)
# 執行linux命令
def exec_commands(self, cmd):
stdin, stdout, stderr = self.ssh.exec_command(cmd)
results = str(stdout.read())
return results
# 批量順序執行
def CMD(self, cmd_list=[]):
CmdDict = {}
for c in cmd_list:
CmdMes = self.exec_commands(c)
print(CmdMes)
CmdDict[c] = CmdMes
return CmdDict
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。