Python SSH 遠程執行命令是指在一個服務器上執行遠程另一個服務器上命令。如果你需要在本地機器上執行命令,或者在遠程機器上執行本地命令,你都可以使用 SSH。在 Python 中使用 SSH 有很多好處,比如可以自動化一些重複的任務。
一、安裝 Python 的 Paramiko 模塊
在使用 Python SSH 遠程執行命令之前,我們需要先安裝 Python 的 Paramiko 模塊。Paramiko 是一個 Python 實現的 SSHv2 協議,可以與 SSH 服務器進行通信。以下是 Paramiko 的安裝方法:
pip install paramiko
安裝完成後,在你的 Python 腳本中,輸入以下命令引用 Paramiko 模塊:
import paramiko
二、連接遠程服務器
在使用 Paramiko 模塊進行 SSH 連接之前,我們需要先創建 SSH Client(). 然後,使用 connect() 方法連接遠程服務器。在這裡,我們為 SSH 連接指定用戶名和密碼。以下是 Python 連接遠程服務器的代碼:
import paramiko
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname='remote_hostname', port=22, username='username', password='password')
其中,
- set_missing_host_key_policy() 方法將 SSHClient() 中的 HostKeysPolicy() 屬性設置為一個自動添加策略,即自動添加新的主機公鑰,然後將所有主機密鑰都接受為合法密鑰。
- connect() 方法中,指定了遠程服務器的主機名(hostname)、端口號(port)、用戶名(username)和密碼(password)。
三、執行遠程命令
連接到遠程服務器後,我們可以使用 Python 腳本執行遠程命令。可以使用 exec_command() 方法,該方法接受一個字符串形式的 Linux 命令作為輸入,並返回三個文件對象:stdin、stdout 和 stderr。以下是 Python 執行遠程命令的代碼:
import paramiko
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname='remote_hostname', port=22, username='username', password='password')
stdin, stdout, stderr = ssh.exec_command('ls')
for line in stdout:
print(line.strip())
在這裡,我們將命令 ‘ls’ 作為參數傳遞給 exec_command() 方法,然後使用 stdout 對象從返回的三個文件對象中獲取命令的輸出。
四、關閉 SSH 連接
在執行完遠程命令後,我們需要關閉 SSH 連接以保存服務器資源。可以使用 close() 方法關閉連接。以下是關閉 SSH 連接的 Python 代碼:
ssh.close()
五、異常處理
在執行 SSH 連接操作時,我們可能會遇到各種連接錯誤。為了處理這些錯誤,我們可以使用 try 和 except 語句塊。以下是如何在 Python 中處理連接異常的方式:
import paramiko
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
try:
ssh.connect(hostname='remote_hostname', port=22, username='username', password='password')
except paramiko.AuthenticationException:
print("Authentication failed, please verify your crendentials")
except paramiko.SSHException as sshException:
print("Unable to establish SSH connection: {}".format(sshException))
except paramiko.Exception as e:
print(e)
print("Something went wrong while connecting to the RemoteHost")
exit(1)
在這個例子中,我們捕獲了 paramiko.AuthenticationException、paramiko.SSHException 和其他 paramiko.Exception。這些異常總是中止執行,並顯示適當的消息。
六、總結
在使用 Python 進行 SSH 遠程執行命令時,我們需要遵循以下幾個步驟:
- 安裝 Paramiko 模塊。
- 連接遠程服務器。
- 執行遠程命令。
- 關閉 SSH 連接。
- 處理異常情況。
這些步驟將幫助你在 Python 中輕鬆實現 SSH 遠程執行命令的功能。
原創文章,作者:VGTPD,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/375141.html