在雲服務測試中,往往需要我們進入雲服務內容進行相關內容的測試。這測試可以使用平台自身的novnc、外部輔助xshell等工具連線到雲服務內部進行測試。
但是在如此反覆的測試操作中,就需要用到自動化測試方法去解決這方面的需求。
在python中我們可以通過第三方庫paramiko,對linux的雲伺服器進行操作。
如下命令先行安裝
pip install paramiko
paramiko包含兩個核心元件:sshclient和sftpclient。
sshclienfbyhvfxjt的作用類似於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
本文標題: 使用python遠端操作linux過程解析
本文位址: /os/linux/290622.html
windows下使用遠端桌面連線到linux
閒來無事就玩起了伺服器,因為沒有信用卡所以沒有使用免費的asw,於是花了一點錢在目前流行的阿里雲上買了個雲伺服器,雲伺服器ecs的版本我是選擇的ubuntu 16.04 64位,因為有過把玩linux的經驗,所以操作起來也沒太大問題,開始遠端桌面連線的時候報了個錯誤,我以為是網路問題,去ping伺服...
遠端登入VirtualBox虛擬機器Linux
通過埠 的方式,使用終端 如mobaxterm,xshell,putty等終端 遠端登入本機虛擬機器linux,開啟虛擬機器,找到 設定 網路 網絡卡1 確認以下設定項,如果不一致請更改。點選 埠 新增一條記錄 名稱任意 如 ssh 協議 tcp 主機ip 127.0.0.1 主機埠 2222 任意...
用vnc實現windows遠端連線linux桌面
網路遙控技術是指由一部計算機 主控端 去控制另一部計算機 被控端 而且當主控端在控制端時,就如同使用者親自坐在被控端前操作一樣,可以執行被控端的應用程式,及使用被控端的系統資源。vnc virtual network computing 是一套由at t實驗室所開發的可操控遠端的計算機的軟體,其採用...