如何使用python脚本通过ssh连接到远程linux服务器,并在python脚本中使用ssh时能够按照用户指定的方式执行命令

如何使用python脚本通过ssh连接到远程linux服务器,并在python脚本中使用ssh时能够按照用户指定的方式执行命令,python,Python,我必须监视8到9台服务器。我正在考虑创建一个python脚本,该脚本将创建一个菜单来登录到任何服务器,并且在使用ssh登录到服务器之后,我能够以ssh中指定的“用户”身份在服务器中执行命令。请参阅下面python中的命令。我正在导入“os”以执行bash命令 server_login = "ssh {}@{}".format('user_name','10.111.0.10') os.system(server_login) 您可以为此安装para

我必须监视8到9台服务器。我正在考虑创建一个python脚本,该脚本将创建一个菜单来登录到任何服务器,并且在使用ssh登录到服务器之后,我能够以ssh中指定的“用户”身份在服务器中执行命令。请参阅下面python中的命令。我正在导入“os”以执行bash命令

 server_login = "ssh {}@{}".format('user_name','10.111.0.10')
            os.system(server_login)

您可以为此安装
paramiko

pip安装paramiko

然后脚本可以是


import paramiko

host = "google.com"
port = 22
username = "user"
password = "Pass"

command = "ls"

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(host, port, username, password)

stdin, stdout, stderr = ssh.exec_command(command)
lines = stdout.readlines()
print(lines)


如果paramiko不是你的风格,我可以想出另外两种方法:

通过
os.system
调用为每个命令运行命令:
ssh@
。当您使用SSH密码而不是密钥时,这会变得相当麻烦

改为使用
子进程
库运行
ssh@
,这样您就可以访问stdin和stdout,并在会话中运行多个命令

import subprocess
p = subprocess.Popen(['ssh','root@example.com'], stdout=PIPE, stdin=PIPE)
p.stdin.write("ls\n")
print(p.stdout.read())

然后,不要只是
ssh@
do
ssh@
。如果您没有指定命令,那么它将进行交互式登录。