#!/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 . . .