使用expect脚本(shell)捕获错误返回的通用方法

时间:2016-02-26 09:42:25

标签: shell expect

我有一个期望脚本,它与调制解调器在特定的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
}
....
....

1 个答案:

答案 0 :(得分:2)

您必须expect timeouteof来处理您的情况。

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"字符串以确认设备的可访问性。