【发布时间】:2019-06-06 01:36:45
【问题描述】:
我正在使用 paramiko 在另一台服务器上执行命令,大多数情况下它工作正常,但对于某些服务器,它在执行几个命令后挂起。
我想知道如何排除故障并了解该问题。
这是我的代码。
import paramiko
client = paramiko.SSHClient()
client.set_missing_host_ley_policy(paramiko.AutoAddPolicy)
ssh = client.connect('hostname,username,password')
channel = ssh.invoke_shell()
stdin = channel.makefile('wb')
stdout = channel.makefile('r')
stdin.write(cmd+'\n')
stdin.flush()
#it hangs here
for line in stdout:
print(line)
【问题讨论】:
-
1) 不要使用
invoke_shell来自动执行命令。 2) 命令是否产生任何错误输出? -
如何在不调用shell的情况下使用标准输入和标准输出??完全没有错误
-
向我们展示您用于检查错误的代码 + 向我们展示您如何执行多个命令。
-
我正在使用调用 shell 来执行带有 stdin.write(“bash”) 和 stdin.flush() 的命令“bash”,然后以相同的方式执行第二个命令。如果没有 invoke_shell(),我不知道该怎么做。我没有任何特定的错误处理,当我执行 stdout.readlines() 时它只是卡住而不显示任何错误
-
好的,所以您不知道这些命令是否会产生任何错误输出? => 阅读
stderr = channel.makefile_stderr('rb', bufsize)
标签: python-2.7 stdout paramiko