Paramiko在某些llinux设备上挂在stdout.readlines()上,但在其他设备上工作正常

时间:2019-06-06 01:36:45

标签: python-2.7 stdout paramiko

我正在使用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 个答案:

答案 0 :(得分:0)

您编写了一个for循环来读取您先前执行的某些命令的输出。 该命令是否连续运行?如果是,那么您需要连续读取缓冲区。

尝试编写类似的读取逻辑 for line in iter(lambda: stdout.readline(2048), ""): print(line) 因为如果不指定大小,它将一直读取到EOF,这会使脚本等待命令结束,然后从read()返回并打印任何输出。
看到这个:Paramiko, exec_command get the output stream continuously