#!/usr/bin/perl use strict; use warnings; use Data::Dumper; use Net::OpenSSH; # $Net::OpenSSH::debug = -1; my $host = 'localhost'; my %opts = ( user => "user", port => "22", # default # psw => "psw", key_path => "/home/user/.ssh/id_rsa" ); my $ssh = Net::OpenSSH->new($host, %opts); $ssh->error and die "Can't ssh to $host: " . $ssh->error; my @ls = $ssh->capture("ls"); $ssh->error and die "remote ls command failed: " . $ssh->error; chomp (@ls); print Dumper \@ls; __END__ $ perl test.pl $VAR1 = [ 'Desktop', 'Documents', . . . ]; #### #!/usr/bin/perl use strict; use warnings; use Data::Dumper; use Net::OpenSSH::Parallel; # $Net::OpenSSH::Parallel::debug = -1; my %hosts = ( 'localhost' => { host => "localhost", user => "user", port => "22", # default # psw => "psw", key => "/home/user/.ssh/id_rsa", } ); my $maximum_workers = scalar (keys %hosts); my $maximum_connections = 2 * $maximum_workers; my $maximum_reconnections = 0; my %opts = ( workers => $maximum_workers, connections => $maximum_connections, reconnections => $maximum_reconnections ); my $pssh = Net::OpenSSH::Parallel->new( %opts ); foreach my $label (keys %hosts) { $pssh->add_host( $hosts{$label}{host}, user => $hosts{$label}{user}, port => $hosts{$label}{port}, password => $hosts{$label}{psw}, key_path => $hosts{$label}{key}, ); } $pssh->push('*', command => 'ls'); $pssh->run; __END__ $ perl test.pl Desktop Documents . . .