0

grep コマンドをサーバーに送信することになっている tcl スクリプトがありますが、直後に exp_send を使用して別の期待を置いた場合にのみコマンドを実行します。

set spawn_id [::SshLibrary::connect **.***.**.*** username password] ;#just ssh, essentially 
set cmd "grep \"$str\" /var/log/syslog/$smtsIp"
expect -re $::LinuxLIbrary::prompt { exp_send "$cmd\r"}
expect -re $::LinuxLibrary::prompt { exp_send "echo \" \"\r }
...

したがって、実験を通じて、最初の期待は、2 番目の期待ステートメントが存在する場合にのみそのコマンドを exp_send することがわかりました (最初の期待コマンドの存在に関して、2 番目の期待コマンドについても同様です)。 2番目のステートメントはまったく役に立ちません。問題が何であるかはわかりませんが、まったく非論理的です。助言がありますか?

4

1 に答える 1

0

最初のコマンドが送信され、結果の文字列が正常に受信されました。ただし、返された文字列は、別の「expect」を呼び出すまでバッファーに保持されます。これは、バッファリングされた I/O でよくある状況です。exp_send なしで 2 番目の「expect」を試してください。

于 2013-08-21T23:28:42.947 に答える