2010-03-30 3 views
0

나는 오류 메시지 왜 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이 원격 시스템과의 상호 작용을 반영하지 않는 경우) 다음을 넣으면됩니다. waitfor() 전에 행에서 print "login ... Waiting ... \ n"을 인쇄하십시오.

0

Net::Telnet 님의 login 로그인 방법을 사용하지 않으십니까? 당신이 그렇게 낮은 수준에있을 때, 모든 세부 사항을 스스로 처리해야합니다. 그 방법에 대한 소스를 살펴보면, 리눅스에서 로그인 버그를 피하는 kludge를 포함하여 꽤 많은 일을한다는 것을 알 수있을 것이다.

관련 문제