我正在尝试使用Python paramiko在远程服务器上执行命令。当我运行以下命令时,我得到提示,当我收到提示时它似乎已成功
>>> import paramiko
>>> ssh = paramiko.SSHClient()
>>> ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
>>> ssh.connect('a.b.c.d', username='server', password='xyz')
>>>
我尝试执行命令时得到的唯一响应是 []
>>> stdin, stdout, stderr = ssh.exec_command("host")
>>> stdout.readlines()
[]
几乎任何命令都会提供相同的输出。 从shell执行ssh时的命令“host”会给出几行Usage输出
如果我不提供密码,我会收到此错误
>>> ssh.connect('a.b.c.d', username='server')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "build\bdist.win32\egg\paramiko\client.py", line 307, in connect
File "build\bdist.win32\egg\paramiko\client.py", line 520, in _auth
paramiko.ssh_exception.SSHException: No authentication methods available
我不知道SSH连接是否通过,以及为什么没有执行命令。
是否应添加某些内容进行身份验证?我错过了什么吗?
答案 0 :(得分:0)
在stdout中没有输出的原因是因为运行不带任何选项的“主机”(如您所说)提供了用法。如果键入“ echo $?”之后,您会看到一个“ 1”而不是一个零。这是用法实际写入stderr而不是stdout的指示。
尝试执行将始终将输出返回到stdout的命令,例如“ ls -l”。这样可以解决您的问题。
编辑:或打印stderr的内容,尽管它不是非常有用,但它也应该起作用。我忘了提-我知道这是一个老话题,但是将来有人可能还会遇到这个问题。