使用python遠端操作linux過程解析

2022-09-27 10:36:14 字數 2185 閱讀 9201

在雲服務測試中,往往需要我們進入雲服務內容進行相關內容的測試。這測試可以使用平台自身的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實驗室所開發的可操控遠端的計算機的軟體,其採用...