期待telnet - 命令不执行

时间:2018-05-29 07:24:50

标签: shell tcl expect telnet

我正在努力通过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。这两个是单独的命令 - &gt; almlogout。但是,它们被粘贴在一起。

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

1 个答案:

答案 0 :(得分:2)

默认情况下,expect语句的模式为glob样式,因此".*>"应为-re ".*>"".*#\s"应为-re ".*#\\s"或{{ 1}}(-re {.*#\s}实际上是"\s")。

由于"s"无法匹配,因此.*-re {.*>}相同,-re {>}-re {.*#\s}相同。