pexpect ライブラリを使用して Python スクリプトを作成しようとしています。
私がやろうとしていることは次のとおりです:
ID = 'User1'
cmdrun = 'A LINUX COMMAND'
sshChild = pexpect.spawn('ssh root@192.168.0.1')
sshOut = file('sshLog.txt','w')
sshChild.logfile = sshOut
sshChild.expect('Last login:*')
sshChild.expect('Please enter your login Id')
sshChild.sendline(ID + '\r')
sshChild.sendline('ssh 192.168.21.1\r')
sshChild.expect('Last login:*')
sshChild.expect('Please enter your login Id')
sshChild.sendline(ID + '\r')
sshChild.sendline(cmdrun + '\r')
cmdrunのsendlineを実行する最後の行まで、すべてが期待どおりに機能します。このコマンドはカスタム tcpdump コマンドです。sendctrl('C') を実行してコマンドを強制終了し、ssh トンネルをエスケープするまで、コマンドを無期限に実行したいと考えています。
ただし、 sendline(cmdrun + '\r') の後に interact() を配置しない限り、tcpdump からの出力は出力されません。
とにかく、対話型の端末制御が必要ないので、対話なしでこれを行うことができますか? 私が望むのは、tcpdump出力をキャプチャして一定期間待機し、sshトンネルとともにtcpdumpを強制終了できるようにすることです。