最后期望指令未执行
问题描述:
我正在使用expect命令来处理IOS自动路由器上的指令自动化脚本。最后期望指令未执行
这里是我写的剧本:
#!/bin/expect
#log_user 0
set timeout 60
set mode [lindex $argv 0]
spawn ssh [email protected]
expect "*assword:" {
send "mypassword\r"
}
expect "*>" {
send "enable \r"
}
expect "*#" {
send "conf t \r"
}
expect "*(config)" {
send "interface Serial0/0/0 \r"
send "clock rate 14400\r"
}
我的问题是,这个脚本在 “ROUTER1(配置)#” 状态停止。 但是,如果我在脚本的末尾放置了一条interact
命令,所有这些都可以正常工作。用户正确进入接口配置模式,时钟频率得到更新。 但事实是,我不希望用户进行交互。
所以,我真的不明白是怎么回事,为什么我不能就这样结束这样的脚本...
如果您有任何线索......?
答
我终于自己解决了我的问题。
这是一个有点cheaty,但是......它的工作原理。
鉴于这是最后expect
命令不工作,我添加了一个最后的“无用的期望”在我的脚本的末尾:
expect "*(config)" {
send "interface Serial0/0/0 \r"
}
expect "*(config-if)" {
send "clock rate 14400\r"
}
expect "*(config-if)" {
send "end"
close
}
无论如何,如果有人有一个正确的方式做它,我仍然打开
用'expect -d'运行脚本并检查调试输出以查看您的模式是否匹配。 –