私はSSHでいくつかのタスクを自動化するためにtwisted.conchを学び始めています。複数のコマンド、返信、対話型コマンドにチャネルを使用していますか?
I tried to modify
サンプルsshclient.pyはhttp://www.devshed.com/c/a/Python/SSH-with-Twisted/4/です。ログイン後に1コマンドを実行し、キャプチャされた出力を出力します。
What I wanted to do
は、一連のコマンドを実行し、出力に基づいて何をすべきかを決めることができます。
The problem I ran into
はtwisted.conch.ssh.channel.SSHChannelは常に(例えば -h DFとして)コマンドを実行した後に自分自身を閉じているように見えるということです。この例は、sendRequestの後にchannelOpenの後になります。その後、チャンネルは常にdataReceivedの後に閉じられます。
これは、サーバーがコマンドの後にEOFを送信したことによるものかどうかと思います。したがって、このチャンネルは閉じなければなりませんか?私は複数のコマンドのために複数のチャンネルを開くべきですか?
Another problem is
これらの対話型コマンド(rm -i somefileなど)。サーバーがEOFを送信しなかったため、SSHChannel.dataReceivedが呼び出されないようです。このような状況で出力をキャプチャするにはどうすればよいですか?また、応答を返すにはどうすればよいですか?
「一連のコマンドを実行する」が* expect *コマンドに似ていることを明確にしたいと思います。 –