Unix服务器使用VShell时使用paramiko

时间:2019-01-31 09:55:03

标签: python paramiko

用例

在UNIX服务器上,当手动登录时,会打开自己的命令外壳以运行命令。

Vshell prompt

我试图通过使用paramiko来自动执行此操作,但是,以某种方式,我无法使用paramiko在命令外壳上执行命令

我做了什么?

我创建了一个可以建立连接的简单脚本,但是由于输出始终为空,因此无法在Vshell上执行命令。

import paramiko
import sys

ssh_client=paramiko.SSHClient()
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh_client.connect(hostname=sys.argv[1],port=sys.argv[2],username=sys.argv[3],password=sys.argv[4])
command="show hwid"
stdin,stdout,stderr=ssh_client.exec_command(command)
out=stdout.read()
print out
err=stderr.read()
print err
ssh_client.close()

同一脚本在未使用 vshell 的服务器上使用时,可以很好地运行

对此有任何帮助或建议吗?

1 个答案:

答案 0 :(得分:1)

stdin,stdout,stderr=ssh_client.exec_command(command)

关于这一行代码,我怀疑SSH服务器未正确配置为允许以这种方式执行命令(这等效于ssh myserver show hwid,而不是在登录后将其键入到终端中)

您可能想模仿登录服务器后键入命令的行为,为此,我认为这是适当的:

shell = ssh_client.invoke_shell()
stdin, stdout, stderr = shell.exec_command(command)
相关问题