次の Expect スクリプトは機能しますがinteract
、最後にユーザーを対話型セッションに強制します。
#!/usr/bin/expect -f
set timeout 10
spawn telnet sometelnetserver.com 10000
foreach line [split [read [open somefile.txt r]] "\n"] {
send "$line\n"
}
interact
interact
ただし、 telnet を削除すると、接続が停止します。スクリプトの出力
spawn telnet sometelnetserver.com 10000
リモートは接続を取得しません。
解決
対話する前に適切な終了コマンドを送信することでハッキリと解決されたため、対話するものは何もありません。
#!/usr/bin/expect -f
spawn -noecho telnet sometelnetserver 10000
foreach line [split [read [open somefile.txt r]] "\n"] {
send -- "ed77e768-0a1f-4fda-98c0-c3e5af441f78 $line\r"
}
send \035
send quit\r
interact
ただし、サーバーが応答しない場合でもハングするため、これは大ざっぱに思えます。