我是新手,希望编写脚本。我正在尝试使用自动telnet脚本备份华为路由器配置。我被困在处理一个字符串“---更多---”,就像按任意键继续我要发送的地方“\ n”
我的路由器输出如下:
--------------------------------
-----------------------
voice-vlan mac-address 00d0-1e00-0000 mask ffff-ff00-0000 description Pingtel phone
voice-vlan mac-address 00e0-7500-0000 mask ffff-ff00-0000 description Polycom phone
voice-vlan mac-address 00e0-bb00-0000 mask ffff-ff00-0000 description 3com phone
#
---- More ----
我的剧本是:
#!/usr/bin/expect
spawn telnet 192.168.xx.xx
expect "Username:"
send "username\n"
expect "Password:"
send "password\n"
expect ">"
# 'dis cur' is like cisco's 'show run'
send "dis cur\n"
expect "---- More ----"
send "\n"
interact
在运行脚本终端时抛出这个错误:
bad flag "---- More ----": must be -glob, -regexp, -exact, -notransfer, -nocase, -i, -indices, -iread, -timestamp, -timeout, -nobrace, or --
while executing
"expect "---- More ----""
任何人都可以帮忙解决这个问题吗?...提前致谢:)
答案 0 :(得分:3)
快速回答:将-ex
放在以-
开头的字符串前面,以便期望代码可以确定它不是一个选项。
然而,除了快速回答,你应该做一个更复杂的版本:
expect {
">" {
# Found prompt
}
-ex "---- More ----" {
send "\n" ;# Or maybe \r?
exp_continue ;# Keep on expecting please
}
}
interact
这样做的好处是可以允许零,一次或多次出现寻呼机输出。