【问题标题】:No response in ssh.exec_command in paramikoparamiko 中的 ssh.exec_command 没有响应
【发布时间】:2019-10-22 02:33:22
【问题描述】:

我正在尝试使用 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”给出了几行用法输出

如果我不提供密码,我会收到此错误

>>> 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 连接是否通过以及为什么没有执行命令。

是否应该添加一些东西来进行身份验证?我错过了什么吗?

【问题讨论】:

  • 我认为连接正在建立,因为我在服务器上执行了 ps -ef 并且我在列表中看到了一个额外的 sshd 进程。但是我无法捕获对命令的响应请帮助。
  • 如果使用 Vyatta stackoverflow.com/questions/15864552/…,请查看此线程

标签: python paramiko


【解决方案1】:

您在标准输出中没有输出的原因是因为运行没有选项的“主机”(如您所说)提供了使用。如果你输入“echo $?”紧接着,你会看到一个“1”而不是一个零。这是使用实际写入标准错误而不是标准输出的指标。

尝试执行一个总是将输出返回到标准输出的命令,例如“ls -l”。这应该可以解决您的问题。

编辑:或者打印 stderr 的内容,这也应该可以工作,尽管它不是非常有用。我忘了提——我知道这是一个旧线程,但将来有人可能还会遇到这个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-13
    • 1970-01-01
    • 2016-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多