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