2013-05-16 2 views
1

에 나는 이상한 문제가 있습니다 나는이의 하단에 도착하려면 :펄 SSH는 장치

나는 ssh를하고 몇 가지 명령을 실행하는 데 필요한 1000 개 이상의 CISCO 장치의 목록이있다. 그래서 Perl에서 다음 코드를 가지고 있습니다.

my $scon = Net::SSH::Perl->new("192.168.110.45"); 
$scon->login($username,$password); 
my ($stdout,$stderr,$exit)= $scon->cmd('show run'); 
print "\n$stdout\n"; 

그리고 위의 코드는 필자에게 필요한 출력을 보여줍니다.

그러나 루프를 만들고 루프 내에서 각 장치를 ssh하려고하면 $ stdout이 비어 있습니다. 다음은

이 작동하지 않는 코드 :

my @allhosts = `cat hosts_ip.txt | cut -d',' -f2`; 
foreach my $ip (@allhosts) { 
    my $scon = Net::SSH::Perl->new($ip); 
    $scon->login($username,$password); 
    my ($stdout,$stderr,$exit)= $scon->cmd('show run'); 
    print "$stdout\n"; 
} 

출력을 위에서 단지 비어 - 아무 것도 반환하지 않습니다.

내가 잘못하고있는 아이디어가 있습니까?

+5

chomp @allhosts – frankc

+0

[Net :: OpenSSH :: Parallel] (https://metacpan.org/module/Net::OpenSSH::Parallel)을 시도해야합니다. – salva

+0

에 대한 호출에서'debug => true'를 추가하십시오. 새로운? – charlesbridge

답변

0

PSSH을 보셨습니까? 이것은 Python 스크립트이지만 많은 호스트에서 몇 가지 명령을 빠르게 실행하는 데 효과적입니다. Perl에 익숙하다면 찾고있는 것이 정확하지 않을 수도 있지만 일회성 작업일지도 모릅니다.