我需要帮助创建一个期望的循环

时间:2014-04-15 18:13:15

标签: loops if-statement tcl expect cisco

我需要帮助创建一个期望的循环。我有一个脚本可以将ssh生成到cisco路由器中并显示呼叫活动语音简报"命令。我需要捕获所有输出,但问题是当屏幕被填满时它停止并要求我按空格以查看输出的其余部分。输出的长度并不总是相同。这意味着我必须按空间的次数不同。这就是我需要循环的>>>

expect “*More*” #this means the screen is full and I need to press space to see more output

send – “ “

那么如何循环呢。

expect "*More*" {send " "} \
    "*RTsedeVoIP_GW1#*" {send -- "exit\r"}
expect "*More*" {send " "} \
    "*RTsedeVoIP_GW1#*" {send -- "exit\r"}
expect "*More*" {send " "} \
    "*RTsedeVoIP_GW1#*" {send -- "exit\r"}
expect "*More*" {send " "} \
    "*RTsedeVoIP_GW1#*" {send -- "exit\r"}
expect "*More*" {send " "} \
    "*RTsedeVoIP_GW1#*" {send -- "exit\r"}
expect "*More*" {send " "} \
    "*RTsedeVoIP_GW1#*" {send -- "exit\r"}
expect "*More*" {send " "} \
    "*RTsedeVoIP_GW1#*" {send -- "exit\r"}
expect "*More*" {send " "} \
    "*RTsedeVoIP_GW1#*" {send -- "exit\r"}
expect "*More*" {send " "} \
    "*RTsedeVoIP_GW1#*" {send -- "exit\r"}

1 个答案:

答案 0 :(得分:0)

像这样:

expect {
    "*More*" {send " "; exp_continue} 
    "*RTsedeVoIP_GW1#*" {send -- "exit\r"}
}

exp_continue命令本质上是一个"重做"在当前expect命令中循环。