Shell 预期telnet-命令未执行
我正在努力通过telnet/expect执行命令Shell 预期telnet-命令未执行,shell,tcl,expect,telnet,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 s
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清空上下UEQ
2/37风扇风扇打开
2/38空下无人机UEQ
2/39空下无人机UEQ
25/1 SFD40 SFD40向上
Node2-1 35;
Node2-1#谁
会话用户名日期终端
-------------------------------------------------------------------------------
116(cli电话)*管理员5月29日06:57 XX.X.XX.XX
节点2-1#ALM注销
报警状态:严重-3大-0小-0
如您所见,第一个提示符为空,第二个提示符中有一个命令。执行它需要几秒钟的时间
此外,在下面可以看到,在提示符中有粘贴的命令almlogout
。这两个是单独的命令->alm
和logout
。但是,它们是粘贴在一起的
问题是-如何在提示符中不延迟地执行命令,第二个问题是-如何将两个命令分开,默认情况下,
expect
语句的模式是glob样式,所以>“*>”
应该是-re.*>“
和”。*\s“
应该是-re.*\\s”
或-re.*.*\s}
(
实际上是“s”
)
由于
*
无法匹配任何内容,因此-re{.*>}
与-re{>}
相同,而-re{.*\s}
与-re{.\s}
相同,谢谢回复。我做了一些更正。但是,现在脚本输出:plz针对新问题提出新问题。