2010-03-30 23 views
0

我寫的小代碼使用Perl,但觀察的錯誤消息爲什麼我的Net :: Telnet程序超時?

#!/usr/bin/perl -w 

use Net::Telnet; 

$telnet = new Net::Telnet (Timeout=>60, Errmode=>'die'); 

$telnet->open('192.168.50.40'); 

$telnet->waitfor('/login:/'); 

$telnet->print('queen'); 

$telnet->waitfor('/password:/'); 

$telnet->print('kinG!'); 

$telnet->waitfor('/:/'); 

$telnet->print('vol >> C:\result.txt'); 

$telnet->waitfor('/:/'); 

$telnet->cmd("mkdir vol"); 

$telnet->print('mkdir vol234'); 

$telnet->cmd("mkdir vol1"); 

$telnet->waitfor('/\$ $/i'); 

$telnet->print('whoamI'); 

print $output; 

連接到遠程服務器,但在運行時我得到以下錯誤

C:\>perl -c E:\test\net.pl 

E:\test\net.pl syntax OK 

C:\>perl E:\test\net.pl 

command timed-out at E:\test\net.pl line 13 

C:\> 

幫我在這方面。我是Perl的新手。

回答

1

我不知道有關Net :: Telnet,但使用'/:/'(帶引號)我想是問題所在。即/:/(在斜槓內) - 這是正則表達式,但引號只是字符串,它應該出現在終端上(即等待字符串'/:/' - 斜線,兩點,斜槓)。要調試這樣的程序(如果Net :: Telnet沒有迴應與遠程系統的交互),你可以簡單地把:print「我正在等待登錄... \ n」在waitfor()之前的行上()

0

爲什麼不使用Net::Telnetlogin方法登錄?當你處於如此低的水平時,你必須自己處理所有的細節。如果你看看這個方法的源代碼,你會發現它做了很多工作,包括克服Linux上的登錄錯誤。

相關問題