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