【问题标题】:How to handle tcl expect output如何处理 tcl 期望输出
【发布时间】:2012-09-01 03:54:38
【问题描述】:

我正在编写一个期望脚本来远程登录到路由器,做一些配置,期望一些输出。

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

set timeout 30;

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

expect ">";

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

如果没有收到预期值,我该如何处理和打印错误消息?

【问题讨论】:

    标签: tcl expect


    【解决方案1】:

    处理超时需要稍微复杂一点的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 结尾(模拟按 Return 键)。

    【讨论】:

    • send "Pollers\r" expect ">" 执行上述行后,我在 CMD 中得到一些行,如下所示。 "Client" Pollers 1) "ICTS_ICEFIX_Worker Worker" (ICTS_ICEFIX_Worker Poller): RUNNING 2) "NYMEX UTBAPI Worker" (NYMEX UTBAPI Poller): STOPPED Enter a poller number or any other key to return to the parent telnet session: 以上这些行我想存储在一个数组变量中,然后我想逐行读取并检查 NYMEX 字是否存在。如果有,那么我需要从该行中剪切子字符串并将数字、NYMEX UTBAPI 和 UTBAPI 存储在一个哈希数组中以进行进一步处理。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多