2011-03-31 3 views
0

원격 프로그램을 통해 일부 명령을 실행하고 싶습니다. 나는 다음 코드를 사용하여 그것을 시도했다.표준 펄 5.10.0에서 원격 실행하는 방법

my $promt = '/bash\$ $/';  
use Net::Telnet(); 

$conn = new Net::Telnet (Timeout => 10, Prompt => $promt); 
$conn->open($host); 
$conn->login($username, $passwd); 
@lines = $conn->cmd("who"); 
print @lines; 

그러나이 오류를 제공, 는

표준 펄 5.10.0을 추가, 변경하지 않고이 작업을 수행하는 방법이 ..... @ INC 순/Telnet.pm를 찾을 수 없습니다 모듈?

+2

Net :: Telnet을 설치하지 않는 이유는 무엇입니까? (루트 액세스 권한이 없다고 대답하지 마십시오. 필요하지 않습니다. 모듈의 개인 복사본 설치에 대한 자세한 내용은 perlmodinstall을 참조하십시오.) –

+0

Net :: Telnet 패키지가 기본 패키지입니까? 펄에서 ??? 적어도 최신 버전에서 ??? 패키지를 수동으로 추가하는 것은 해결책이 아닙니다. 사용자가이 원격 프로그램을 사용하여 소스 프로그램에 액세스 할 것이기 때문입니다. 사용할 수없는 경우 패키지 설치를 자동화하는 방법이 있습니까 ??? – DarRay

답변

0

필자는이 기능을 이용하여 문제 ... 원격 컴퓨터에서 실행하는 데 필요한 매개 변수를 필요 -Execute_Remote_Command-

# Get the needed values from the database 
sub Execute_Remote_Command($) { 
    print "sshpass -p $password ssh $user\@$host '$_[0]'\n"; 
    print `sshpass -p $password ssh $user\@$host '$_[0]'`; 
    print `exit`; 
} 

기능을 해결했다.

여기에 필요한 추가 요구 사항은 sshpass 명령을 지원하는 것이며 다음 url을 사용하여 다운로드 할 수 있습니다. http://linux.softpedia.com/get/Security/Sshpass-8693.shtml

2

자신의 사용자 경로에 Net :: Telnet perl 모듈을 설치하기 만하면됩니다. 또는 펄에 구속력이 없다면 원격 시스템에서 명령을 실행하도록 제안 할 수있는 가장 좋은 방법은 SSH입니다.

$ssh [email protected] 'command' 

이렇게하면 STDOUT에서 결과를 얻을 수 있습니다.

예 :

[email protected]:~ # ssh [email protected] 'who' 
brock pts/0 Oct 21 10:31 (75.72.194.149) 
jim pts/1 Oct 25 06:25 (128.101.163.128) 

당신은 "Run Remote Command with SSH"에서 몇을 찾을 수 있습니다.

+0

유는 나에게 예를 든다. – DarRay

+0

내 대답을 다시 보아라. – Space

관련 문제