我有一个期望脚本,它与调制解调器在特定的IP和端口号上交互。如果产生telnet超时或由于某种原因无法连接,我想向用户报告错误。简而言之,我想打印一条错误消息,如果命令失败而退出,则退出。
set -e doesn't work on expect script.
您的建议将帮助我解决此问题。感谢。
想重新强调我使用的是expect脚本而不是bash / sh。
#!/usr/bin/expect
try {
spawn telnet $HOSTIP $HOSTPORT
} on error {
exit 1
}
....
....
答案 0 :(得分:2)
您必须expect
timeout
和eof
来处理您的情况。
spawn telnet $HOSTIP $HOSTPORT
# To control the timeout value, update this variable
set timeout 60; # 1 min.
expect {
timeout {puts "Time-out happened;exit 1}
eof {puts "EOF occured";exit 1}
"required-pattern" {puts "The modem is accessible"; exit 0}
}
用您的任何模式替换"required pattern"
字符串以确认设备的可访问性。