paramiko を介してリモート サーバーでスクリプトを実行し、stdout に書き込まれた出力を受け取る方法を探しています。これらのスクリプトは 1 時間ほど実行できますが、タスクの実行中に標準出力に出力されたログ メッセージを取得したいと考えています。どうすればいいですか?
paramikoでそれができない場合、これを行うのに役立つ他のモジュールはありますか?
トランスポートを手に入れて、独自のチャンネルを生成してください。チャネルを使用してコマンドを実行したり、select ステートメントで使用して、いつデータを読み取れるかを確認したりできます。
#!/usr/bin/env python
import paramiko
import select
client = paramiko.SSHClient()
client.load_system_host_keys()
client.connect('host.example.com')
transport = client.get_transport()
channel = transport.open_session()
channel.exec_command(COMMAND)
while True:
rl, wl, xl = select.select([channel],[],[],0.0)
if len(rl) > 0:
# Must be stdout
print channel.recv(1024)