#!/usr/bin/perl -w
use strict;
use Net::SSH::Perl;
use threads;
use Data::Dumper;
our $numthreads;
my (@pass, @host);
my $user = 'XXXX';
$pass[0] = 'XXXX'; $host[0] = 'XXXX';
$pass[1] = 'XXXX.'; $host[1] = 'XXXX';
sub par {
my $nt = shift();
my $task = shift;
my @t; # array of tasks
my $i;
my @results;
for($i=1; $i < $nt; $i++) {
$t[$i] = threads->new($task, @_);
}
@{$results[0]} = $task->( @_);
for($i=1; $i < $nt; $i++) {
@{$results[$i]} = $t[$i]->join();
}
@results;
}
sub ssh {
my $cmd = shift();
my $id = threads->self()->tid();
my $pass = $pass[$id];
my $host = $host[$id];
my ($stdout, $stderr, $exit) = ('', '', '');
my $ssh = Net::SSH::Perl->new($host);
$ssh->login($user, $pass);
[ $ssh->cmd($cmd) ];
}
$numthreads = (shift || 2);
my @results = par($numthreads, \&ssh, 'pwd');
print Dumper(\@results);
Ejecución:
$ ./example2.pl
Argument "ssh-rsa" isn't numeric in numeric eq (==) at /usr/local/share/perl/5.8.4/Net/SSH/Perl/Key/RSA1.pm line 94, <FH> line 6.
Argument "ssh-dss" isn't numeric in numeric eq (==) at /usr/local/share/perl/5.8.4/Net/SSH/Perl/Key/RSA1.pm line 94, <FH> line 20.
$VAR1 = [ [ [ '/user1/uni/ull/casiano ', 'MANPATH: Undefined variable. ', 0 ] ],
[ [ '/home/casiano ', undef, 0 ] ]
];
Casiano Rodríguez León
