2016-04-19 9 views
1

Я создаю perl-скрипт, в котором я должен использовать несколько серверов из одного сценария и выполнять те же команды на всех этих удаленных серверах. Сейчас я использую «If loop» и вызывать все остальные серверы из этого скрипта и выполнять на них команду. Я хочу создать функцию с этими наборами команд, которые мне нужно выполнить на этих разных серверах.Как вызвать функцию в Perl-скрипте после выполнения SSH?

if($random_number==1){ 
use Net::SSH::perl 
use lib qw("user/share/perl5/"); 
my $hostname = "10.*.*.*"; 
my $username = "root"; 
my $password = "root\@123"; 
my $cmd1 = "ls /home/ashish/" 
my $cmd2 = "netstat -na | grep *.*.*.*; 
$ssh->login("$username" , "$password"); 
my ($stdout,$stderr,$exit) = $ssh->cmd("$smd1" && "$cmd2"); 
print $stdout; 
} 

вышеуказанные команды после того, если синтаксис необходимо повторить для разных серверов. хотите использовать вызов функции.

+0

Что такое случайное число? – simbabque

+0

1) 'if' не является петлей 2) Начните с некоторых базовых учебников по perl/general programming – realmaniek

+0

Вы, кажется, забыли задать вопрос :-) –

ответ

1

Начнет с общим toutorials программирования, то делать это нравится:

use Net::SSH::perl; 
use strict; 
use warnings;  

my @servers = (
    { 
     hostname => 'somehost1', 
     username => 'someuser1', 
     password => 'somepass1', 
     commands => ['somecmd11','somecmd12'], 
    }, 
    { 
     hostname => 'somehost2', 
     username => 'someuser2', 
     password => 'somepass2', 
     commands => ['somecmd21','somecmd22'], 
    }, 
# ... 
); 

do_something_on_remote_servers_one_by_one(@servers); 
exit(0); 




sub do_something_on_remote_servers_one_by_one { 
    my (@servers) = @_; 

    foreach my $server (@servers) { 
     my $ssh = Net::SSH::perl->new($server->{hostname}); 
     $ssh->login($server->{username}, $server->{password}); 
     my $cmd_string = join(' & ', @{ $server->{commands} }); 
     my ($stdout,$stderr,$exit) = $ssh->cmd($cmd_string); 
     print $stdout; 
    } 
} 

После этого, вы можете думать о выполнении команд в paralell.

+0

Спасибо, что это сработало .... –

+0

Np, тогда вы можете отметить мой ответ как разрешение. – realmaniek