使用python遠端操作linux過程解析
這篇文章主要介紹了使用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中的幾個基礎名詞:
Channel:一種類Socket,一種安全的SSH傳輸通道; Transport:一種加密的會話,使用時會同步建立了一個加密的Tunnels(通道),這個Tunnels叫做Channel; Session:client與Server保持連線的物件,用connect()/start_client()/start_server()開始會話。 Paramiko的基本使用 SSHClient常用的方法介紹 connect(): 站長部落格 實現遠端伺服器的連線與認證,對於該方法只有hostname是必傳引數。
常用引數
hostname 連線的目標主機 port=SSH_PORT 指定埠 username=None 驗證的使用者名稱 password=None 驗證的使用者密碼 pkey=None 私鑰方式用於身份驗證 key_filename=None 一個檔名或檔案列表,指定私鑰檔案 timeout=None 可選的tcp連線超時時間 allow_agent=True, 是否允許連線到ssh代理,預設為True 允許 look_for_keys=True 是否在~/.ssh中搜尋私鑰檔案,預設為True 允許 compress=False, 是否開啟壓縮 set_missing_host_key_policy():設定遠端伺服器沒有在know_hosts檔案中記錄時的應對策略。目前支援三種策略:
設定連線的遠端主機沒有本地主機金鑰或HostKeys物件時的策略:
AutoAddPolicy 自動新增主機名及主機金鑰到本地HostKeys物件,不依賴load_system_host_key的配置。即新建立ssh連線時不需要再輸入yes或no進行確認 WarningPolicy 用於記錄一個未知的主機金鑰的python警告。並接受,功能上和AutoAddPolicy類似,但是會提示是新連線 RejectPolicy 自動拒絕未知的主機名和金鑰,依賴load_system_host_key的配置。此為預設選項 exec_command():在遠端伺服器執行Linux命令的方法。 open_sftp():在當前ssh會話的基礎上建立一個sftp會話。該方法會返回一個SFTPClient物件。
利用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()
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69989889/viewspace-2751552/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- rabbitmq中文教程python版 - 遠端過程呼叫MQPython
- Google遠端過程呼叫-GRPCGoRPC
- ZT:通過PXE遠端安裝Linux系統全程解析Linux
- RPC(遠端過程呼叫)詳解RPC
- vnc遠端連線linux,vnc遠端連線linux的具體操作VNCLinux
- 遠端Spark+Python+Pycharm操作指南SparkPythonPyCharm
- 遠端連線Linux相關操作Linux
- 使用遠端控制操作遠端xp sp2的問題
- git遠端操作Git
- 執行遠端DBMS_LOB包中過程
- Python騷操作之微信遠端控制電腦Python
- 解決 Linux 下 SSH 遠端連線服務卡慢的全過程Linux
- 使用java登入遠端LINUX並對服務實現各種操作JavaLinux
- 遠端連線Kali Linux使用PuTTY實現SSH遠端連線Linux
- [譯] 通過 SSH 遠端使用 Python 直譯器來執行 FlaskPythonFlask
- 遠端控制的操作流程
- git 遠端分支常用操作Git
- git 遠端操作詳解Git
- RMAN遠端複製搭建物理DG過程小結
- 透過MobaXterm操作遠端伺服器電腦的方法伺服器
- Netty原始碼解析 -- 服務端啟動過程Netty原始碼服務端
- Linux 核心處理中斷全過程解析Linux
- 在linux上使用VNC遠端監控LinuxVNC
- 在遠端和本地儲存過程間傳遞陣列儲存過程陣列
- Rd遠端桌面操作方法
- rdp遠端桌面操作方法
- 操作遠端主機 docker 命令Docker
- Fabric1.4原始碼解析:客戶端建立通道過程原始碼客戶端
- 使用 Frp 和 Docker 通過遠端桌面和 SSH 來遠端控制 Windows(反向代理)FRPDockerWindows
- DNS解析過程原理DNS
- SQL 解析的過程SQL
- 域名解析過程
- powershell遠端重啟win10怎麼操作_win10如何使用powershell遠端重啟Win10
- .net socket.io客戶端使用過程客戶端
- 使用SQLSERVER的擴充套件儲存過程實現遠端備份與恢復 (轉)SQLServer套件儲存過程
- LINUX開發使用的3個遠端工具Linux
- linux遠端監控軟體nomachine的使用LinuxMac
- Linux下VNC遠端控制的使用方法LinuxVNC