我编写的代码在下面执行命令时读取ssh的输出是示例代码
stdin, stdout, stderr = ssh.exec_command(cmd)
channel = stdout.channel
stdin.close()
channel.shutdown_write()
stdout_chunks=[]
exit_status = 1
#stdout_chunks.append(stdout.channel.recv(len(stdout.channel.in_buffer)))
stdout_chunks.append(stdout.channel.recv(1024))
#or channel.recv_ready() or channel.recv_stderr_ready()
while not channel.closed or channel.recv_ready() or channel.recv_stderr_ready():
readq, _, _ = select.select([stdout.channel], [], [], timeout)
for c in readq:
if c.recv_ready():
stdout_chunks.append(stdout.channel.recv(512))
got_chunk = True
print stdout_chunks[-1]
if c.recv_stderr_ready():
print stderr.channel.recv_stderr(512)
got_chunk = True
if not got_chunk and stdout.channel.exit_status_ready() and not stderr.channel.recv_stderr_ready() and not stdout.channel.recv_ready():
stdout.channel.shutdown_read()
stdout.channel.close()
stdout.channel.recv_exit_status()
break
但是,当我打印readq时,有时我得到像[]
这样的空字符串,因为我的执行不会继续进行。如何处理这种情况
答案 0 :(得分:0)
对不起,但问题不明确。如果你的readq没有成员,则根本不执行for循环(并且不会引发异常)。在这种情况下,这是for循环下面的所有代码。这是你问的问题的答案吗?