2013-06-12 134 views
0

我想要做的是编写一个期望脚本,这将允许我搜索文件A,并且如果找到文件A,则发送一系列命令。如果找到文件B或C,则继续执行脚本。我一直卡在正则表达式上。我通过www.myregextester.com单独使用我正在搜索的数据运行表达式,并且匹配得很好。如果任何人有任何这方面的经验,我会非常感谢帮助。使用正则表达式与期望

send "term length 0\r" 
expect "*#" 
send "wr mem\r" 
expect "*#" 
send "dir flash:\r" 
expect 
    if [[ \bc3750-ipservicesk9-mz.122-55.SE7.bin\b ]]; then { 
     send "conf t\r" 
     expect "*(config)#" 
     send "boot system flash:c3750-ipservicesk9-mz.122-55.SE7.bin\r" 
     expect "*(config)#" 
     send "exit\r" 
     expect "*#" 
     send "reload at 02:00 8 June\r" 
     expect "System configuration has been modified. Save? [yes/no]:" 
     send "yes\r" 
     expect "Proceed with reload? [confirm]" 
     send "\r" 
     expect "*#" 
     send "wr\r" 
     expect "*#" 
     send "exit\r 
     expect eof 
    elif [[ \bc3750-ipservicesk9-mz.122-55.SE5\b | b\c3750-ipservicesk9-mz.122-55.SE5.bin\b} ]]; then 
fi 
} 

回答

0
expect { 
    -re {\mc3750-ipservicesk9-mz\.122-55\.SE7\.bin\M} { 
     send "conf t\r" 
     #... 
    } 
    -re {\mc3750-ipservicesk9-mz\.122-55\.SE5(?:\.bin)?\M} 
} 

Expect是Tcl的的扩展:你可以阅读关于TCL正则表达式here

+0

这真的好像已经做到了,谢谢你的链接。这是一个巨大的帮助! – bjforesthowell