如何处理tcl expect输出

如何处理tcl expect输出,tcl,expect,Tcl,Expect,我正在编写一个expect脚本,将telnet连接到路由器,进行一些配置,期望得到一些输出 如果所需的提示不可用,则它将等待提示并超时。 那么我该如何处理这个问题并打印错误消息呢 set timeout 30; puts "Telnet to $IP 2361\n\n"; spawn telnet $IP 2361; expect ">"; send "ACT-USER::$user_name:1::$password;"; expect ">"; 如果未收到预期值,如何处理

我正在编写一个expect脚本,将telnet连接到路由器,进行一些配置,期望得到一些输出

如果所需的提示不可用,则它将等待提示并超时。 那么我该如何处理这个问题并打印错误消息呢

set timeout 30;

puts "Telnet to $IP 2361\n\n";
spawn telnet $IP 2361;

expect ">";

send "ACT-USER::$user_name:1::$password;";
expect ">";

如果未收到预期值,如何处理和打印错误消息?

处理超时需要稍微复杂一点的使用
expect

expect {
    ">" {
        # Got it; don't need to do anything here because we run the code after
    }
    timeout {
        send_user "timed out, oh no!\n"
        exit 1
    }
}

# Now we put the rest of the script...
send "ACT-USER....blah"
# ...
请注意,我很惊讶您的
send
并没有以
\r
结尾(模拟按回车键)。

发送“轮询器”\r“期望”>“
在执行上述行后,我在CMD中得到了一些行,如下所示<代码>“客户”轮询器1)“ICTS_ICEFIX_工人轮询器”(ICTS_ICEFIX_工人轮询器):运行2)“NYMEX UTBAPI工人”(NYMEX UTBAPI轮询器):STOPPED输入轮询器号码或任何其他键以返回到父telnet会话:我想将以上几行存储在一个数组variabe中,然后我想逐行读取并检查NYMEX word是否存在。如果有,那么我需要从该行剪切子字符串,并将数字、NYMEX UTBAPI和UTBAPI存储在一个散列数组中,以进行进一步的处理。