2011-09-08 88 views
0

我有要求发送命令到远程设备,并且每当它要求“按CTRL + C打破,其他键继续...”我应该再次发送“回车键“到远程设备。perl Net :: Telnet命中如果远程节点请求输入

我在下面写了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... 

,然后将其超时。

任何想法如何发送输入命中,直到我的远程设备要求我击中输入。

回答

0

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

+0

感谢hasturkun拍摄,你的建议,我设法击中通过进入。脚本....现在的问题是如何将所有输出存储到一个文件...它打印后输入输入... my @ output = $ session-> print('DSP PATCH :;'); ($ session-> waitfor('/ continue /')){ push(@ output,$ session-> print()); push(@ output,$ session-> waitfor('/ continue /'));如果有人帮助如何存储STDOUT中包含的所有东西,我的问题将得到解决.... – Mahesh

+0

好吧,我通过.... Input_log => \ * FILE1它将所有输出存储到文件句柄:FILE1。 ...........非常感谢您的帮助......问候:Mahesh – Mahesh

0

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

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

Here