我实例化一个 paramiko 通道,然后我执行一个命令并获得它的输出:
channel = transport.open_session()
channel.exec_command('service myservice restart')
stdout = channel.makefile('rb')
for line in stdout:
print line,
但是,在执行命令(完成)后,输出迭代被阻塞。
我用 ssh 测试过:
ssh myhost service myservice restart # terminal gets blocked
ssh -t myhost service myservice restart # OK
所以我想模拟 paramiko 中的“-t”选项。到目前为止,我尝试过:
channel = transport.open_session()
channel.get_pty()
channel.invoke_shell()
stdin, stdout = channel.makefile('wb'), channel.makefile('rb')
stdin.write('service myservice restart\n')
for line in stdout:
print line,
但是现在,stdout 没有关闭,for 永远不会结束。
有任何想法吗?