【问题标题】:expect telnet - command not executing期望 telnet - 命令未执行
【发布时间】:2018-11-07 18:29:40
【问题描述】:

我正在努力通过 telnet/expect 执行命令。

set send_slow {500 .5}
send -s -- "show slot *\r"
expect {
    ".*>" {
        send -s -- "y\r"
        exp_continue
    }
    ".*#\s"
}
send -s "who\r"
expect "# "
send -s "alm\r"
expect "# "
send -s -- "logout\r"

show slot 命令在插槽中打印卡。由于分页用户被要求继续。执行后显示提示NODE2-1#,我想执行命令who

我得到的是:

2/36 PF                   Empty                Up      Down    UEQ
2/37 FAN                  FAN                  Up      Up
2/38 Empty                Empty                Down    Down    UAS UEQ
2/39 Empty                Empty                Down    Down    UAS UEQ
25/1 SFD40                SFD40                Up      Up

Node2-1#<br> Node2-1# who

Session          Username                          Date         Terminal
-------------------------------------------------------------------------------
116 (cli tel) *  admin                             May 29 06:57 XX.X.XX.XX

Node2-1# almlogout

Alarm Status:  Critical-3    Major-0    Minor-0

如您所见,第一个提示为空,第二个提示有一个命令。执行它需要几秒钟。

此外,可以看到,在提示符下粘贴了命令almlogout。这两个是单独的命令 -> almlogout。但是,它们是粘贴在一起的。

问题是 - 如何在没有延迟的情况下在提示符下执行命令,第二个问题 - 如何分隔两个命令

【问题讨论】:

    标签: shell tcl expect telnet


    【解决方案1】:

    默认情况下,expect 语句的模式是全局样式,因此 ".*&gt;" 应该是 -re ".*&gt;"".*#\s" 应该是 -re ".*#\\s"-re {.*#\s}"\s" 实际上是 "s")。

    由于.* 不能匹配任何内容,所以-re {.*&gt;}-re {&gt;} 相同,-re {.*#\s}-re {#\s} 相同。

    【讨论】:

    • 感谢您的回复。我做了一些更正。但是,现在脚本输出:
    • 请针对新问题提出新问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-30
    • 2012-05-06
    • 2018-11-07
    • 1970-01-01
    • 1970-01-01
    • 2016-03-01
    • 2012-01-14
    相关资源
    最近更新 更多