使用While进行Perl测试“telnet-> Waitfor”

时间:2016-10-10 22:03:29

标签: regex perl

我正在编写一个脚本在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--”。

0 个答案:

没有答案