Python 中使用 SSH

Manav Narula 2023年1月30日 2021年4月29日
  1. Python 中使用 paramiko 庫建立 SSH 連線並執行命令
  2. Python 中使用 subprocess 模組建立 SSH 連線並執行命令
Python 中使用 SSH

SSH(代表 Secure Socket Shell)是一種高度使用的網路協議,用於在未知和不安全的網路上提供安全,加密的通訊服務。它使我們可以通過這樣的網路在兩個裝置之間遠端傳送命令,並具有許多應用程式。

Python 有可用的模組允許執行此類 SSH。本教程將討論在確保 SSH 連線後如何對遠端裝置執行 shell 命令。

Python 中使用 paramiko 庫建立 SSH 連線並執行命令

paramiko 模組通常用於在 Python 中實現 SSH 協議。它允許伺服器和客戶端通訊。

檢視下面的程式碼,以便使用此模組在遠端裝置上執行 Shell 命令。

ssh = paramiko.SSHClient()
ssh.connect(server, username=username, password=password)
ssh_stdin, ssh_stdout, ssh_stderr = ssh.exec_command(cmd_to_execute)

SSHClient() 函式指定 SSH 伺服器會話。我們使用 connect 函式中的正確身份驗證詳細資訊連線到裝置。可以使用 exec_command() 函式在此裝置上執行所需的命令。

另一個名為 spur 的模組是從該模組派生而來的,但其介面略好。

Python 中使用 subprocess 模組建立 SSH 連線並執行命令

subprocess 模組中的 check_output() 函式可用於執行傳遞給它的命令,並且該函式返回此命令的輸出。我們可以使用此函式建立無密碼的 SSH 連線,以執行所需的命令。

以下程式碼顯示了此示例。

subprocess.check_output(['ssh', 'my_server', 'echo /*/'])

此模組中可以使用的另一種方法是 Popen()。它類似於 os 模組中的 os.Popen() 函式,用於執行命令和外部程式。在此模組中,Popen 是類而不是方法。由於需要與所需命令一起指定各種引數,因此使用它有點複雜。它將所有 4 個 os.popen() 函式合併為一個。它還將命令作為單獨的程序執行。我們可以使用它來建立 SSH 連線並執行命令,如下所示。

subprocess.Popen("ssh {user}@{host} {cmd}".format(user=user, host=host, cmd='ls -l'), shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate()
Author: Manav Narula
Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn