2015年10月7日水曜日

paramiko で exec_command で stdin, stdout 同時に利用すると帰ってこない

python paramiko で exec_command() でコマンド実行する際に、標準入力と
標準出力を同時に使いたいんだけど、標準出力がどうも取れなくて固まって
しまう。下記のように stdin.channel.shutdown_write()  する必要があるぽい。

import paramiko
client = paramiko.SSHClient()
client.connect(hostname='host', ....)
stdin, stdout, stderr = client.exec_command(command)
stdin.write(mydata)
stdin.flush()
stdin.channel.shutdown_write()  # <--- これが必要
stdin.close()
ret = stdout.read()
これなら大丈夫なんだけど、これで良いのか?

0 件のコメント:

コメントを投稿