2013-08-22 57 views
0

我使用Perl的Net :: Telnet用於連接到我的路由器,並改變一些選項,但我得到這個錯誤:模式匹配超時

pattern match timed-out

每一件事情是真的(user和pass,圖案等),我會爲這個錯誤的來源瘋狂。我的代碼是:

use Net::Telnet; 
$telnet = new Net::Telnet (Timeout=>10, Errmode=>'die'); 
$telnet->open('192.168.1.1'); 
$telnet->waitfor('/login[: ]$/i'); 
$telnet->print('admin'); 
$telnet->waitfor('/password[: ]$/i'); 
$telnet->print('admin'); 
$telnet->waitfor('/\$ $/i'); 
$telnet->print('list'); 
$output = $telnet->waitfor('/\$ $/i'); 
print $output; 

現在我該怎麼辦?有其他方法嗎? 謝謝

+0

是你傳遞給'waitfor'的那些字符串,他們是正則表達式嗎? –

+0

是的,當我連接到我的路由器(管理員,管理員)我得到這個$輸入命令 – user2676574

+0

禁用安全。 – michael501

回答

0

也許嘗試使用Net::Telnet頁面頂部的示例登錄?

use Net::Telnet(); 
$t = new Net::Telnet (Timeout => 10, Errmode=>'die'); 
$t->open($host); 
$t->login($username, $passwd); 
@lines = $t->cmd("who"); 
print @lines; 

這似乎適用於我。儘管您的代碼段在嘗試登錄的第一個waitfor時超時。

+0

不行不行:等待命令提示符超時 – user2676574

+0

您有其他方法嗎?不使用Net :: Telnet() – user2676574

+0

嗯,你可以手動telnet到你的路由器沒有問題? – nitekrawler