in reply to simple iterate and run cmd script

Here is another method, where you use passwords. You could put the %hostdata hash in a config file if you wanted.
#!/usr/bin/perl use strict; use warnings; use Net::SSH::Perl; my %hostdata = ( 'localhost' => { user => "zz", password => "ztest", cmdtorun => "ls -la", misc_data => [], }, 'zentara.zentara.net' => { user => "zz", password => "ztest", cmdtorun => "/usr/bin/uptime", misc_data => [], }, ); foreach my $host (keys %hostdata) { my $ssh = Net::SSH::Perl->new($host, port => 22); #, debug => 1 +); $ssh->login($hostdata{$host}{user},$hostdata{$host}{password} ); my ($out) = $ssh->cmd($hostdata{$host}{cmdtorun}); print "$out\n"; }