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 は決して終了しません。
何か案は?