如果远程节点要求,则perl Net :: Telnet命中

时间:2011-09-08 14:12:11

标签: perl

我要求向远程设备发送命令,并且每当它要求“按CTRL + C中断,其他键继续...”时,我应该再次向远程设备发送“Enter key”。

我写下面scritpt但不知何故它不起作用。

my $session = new Net::Telnet (
    Timeout => 30, 
    Prompt=> '/>/', 
    Input_log  =>\*STDOUT
);
$session->open('device-id');
$session->login('admin','admin');

print "connected and logged in \n\n"; 
print "Kindly wait till output stored in FILE \n\n";

my @output1=$session->cmd('DSP PATCH:;');
if ($session->waitfor('/Press CTRL+C to break, other key to continue.../')) {
    $session->print('');   # Assuming default is \n for print command
}

print @output1;

上述脚本的输出是


connected and logged in

Kindly wait till output stored in FILE

.

.

some output of command send...........

.
Press CTRL+C to break, other key to continue...

然后它超时。

任何想法如何发送命中直到我的远程设备要求我按回车。

2 个答案:

答案 0 :(得分:0)

cmd方法发送命令并等待提示。相反,要么使用printwaitfor运行命令(最有可能保存返回的预匹配),要么使用远程消息覆盖该cmd调用的提示。我建议做前者。

答案 1 :(得分:0)

您是否使用 $session -> dumplog() 进行检查以进行调试?

试试这个:: my $telnet = Net::Telnet->new(Timeout => 30,Errmode => 'return');

取自Here