4

paramiko を介してリモート サーバーでスクリプトを実行し、stdout に書き込まれた出力を受け取る方法を探しています。これらのスクリプトは 1 時間ほど実行できますが、タスクの実行中に標準出力に出力されたログ メッセージを取得したいと考えています。どうすればいいですか?

paramikoでそれができない場合、これを行うのに役立つ他のモジュールはありますか?

4

1 に答える 1

4

トランスポートを手に入れて、独自のチャンネルを生成してください。チャネルを使用してコマンドを実行したり、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)

ソース: https://stackoverflow.com/a/9470642/286937

于 2012-06-08T02:45:34.393 に答える