我實例化一個的paramiko信道,那麼我執行命令,並得到其輸出:的paramiko模擬的ssh -t選項
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永遠不會結束。
任何想法?
顯然,invoke_shell返回無。另外,在發送命令之後關閉通道(通過寫入stdin)不要讓命令完成,並且我不會輸出到stdout(有時候我只能得到像「Last login:Tue Dec 11 09: 16:32 2012 from localhost「) – kaspersky
通過」不要讓命令完成「我的意思是」不要等待命令完成「 – kaspersky