以下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
并且遥控器永远不会连接。
解决方案
Hackily通过在交互之前发送适当的退出命令来解决,因此无需与之交互。
#!/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
这看起来有点粗略,因为如果服务器没有响应,它仍然会挂起。