最后期望指令未执行

时间:2016-05-31 15:17:04

标签: linux bash expect cisco-ios

我正在编写一个脚本,使用expect命令自动化IOS Cisco路由器上的指令。

这是我写的脚本:

#!/bin/expect
#log_user 0
set timeout 60

set mode [lindex $argv 0]
spawn ssh myuser@10.0.0.254


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(config)#”状态。 但是,如果我在脚本的末尾添加interact命令,则所有这些都正常工作。用户正确进入接口配置模式,时钟速率得到了很好的更新。 但事实是,我不希望用户进行互动。

所以我真的不明白发生了什么,为什么我不能像那样结束剧本......

如果你有任何线索......?

1 个答案:

答案 0 :(得分:1)

我终于设法自己解决了我的问题。

这有点儿很讨厌,但是......它很有效。

鉴于它是最后一个不起作用的expect命令,我在脚本末尾添加了最后一个“无用的期望”:

expect "*(config)" {
        send "interface Serial0/0/0 \r"
}
expect "*(config-if)" {
        send "clock rate 14400\r"
}
expect "*(config-if)" {
        send "end"
        close
}

无论如何,如果有人有正确的方法,我仍然开放