我正在编写一个脚本在Cisco设备中输入命令,有时输出很长并出现“--More--”提示符,在这种情况下我想使用“while”和“telnet-&gt ;等待“并且如果仍然出现”--More--“则发送空格键(”“)。最后,我想在“telnet-> waitfor”检测到“#”时捕获完整的输出。
当我运行脚本时,perl会在“./prueba-print2.pl第27行”中显示错误“模式匹配超时”。第27行是:
line 26: while ($telnet->waitfor('/.+More.+$/')) {
line 27: $telnet->print(" ");
line 28: }
完整的代码是:
#!/usr/bin/perl -w
use Net::Telnet;
$host = $ARGV[0];
$telnet = new Net::Telnet(Timeout=>10);
$telnet->open($host);
$telnet->waitfor('/ *Username: *$/');
$telnet->print("user");
$telnet->waitfor('/ *Password: *$/');
$telnet->print("pass");
$telnet->waitfor('/.+#.*$/');
#$telnet->print('show int statu | e aseT|No Conn|No Tr|disa|Po');
#$telnet->print('show inter statu | e 1000[bB]aseT.+');
$telnet->print('show int statu | i .+[^isabled].+10[G]*[00]*[Bb]ase[^T].+');
while ($telnet->waitfor('/.+More.+$/')) {
$telnet->print(" ");
}
@lineas = $telnet->waitfor('/.+#.*$/');
print $lineas[0];
我手动测试了命令
'show int statu | i .+[^isabled].+10[G]*[00]*[Bb]ase[^T].+'
在我的Cisco设备的控制台中,输出很长,并出现提示“--More--”。