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()
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