Beefy Boxes and Bandwidth Generously Provided by pair Networks
Your skill will accomplish
what the force of many cannot

Re: Net::OpenSSH and fork()

by sflitman (Hermit)
on Jul 23, 2010 at 04:14 UTC ( #850953=note: print w/ replies, xml ) Need Help??

in reply to Net::OpenSSH and fork()

Based on my reading of the docs, Net::OpenSSH is already forking off separate processes. I'm not sure you're getting anything by doing the child processes in parallel, why not fire off each connection in a loop. Net::OpenSSH appears to support this directly (taken from its POD, added an example for $cmd, tested):

#!/usr/bin/perl use strict; use warnings; use Net::OpenSSH; my @hosts=( '','','' ) +; my $cmd='uptime'; my %conn = map { $_ => Net::OpenSSH->new($_) } @hosts; my @pid; for my $host (@hosts) { open my($fh), '>', "/tmp/out-$host.txt" or die "unable to create file: $!"; push @pid, $conn{$host}->spawn({stdout_fh => $fh}, $cmd); } waitpid($_, 0) for @pid; exit;
The spawn command directly and asynchronously runs each remote host session. I'm always leery of fork, it is probably copying all the named sockets into each child process space which is why you lose them when one child closes. (Hmm, isn't there reference counting?)


Comment on Re: Net::OpenSSH and fork()
Select or Download Code

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://850953]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others lurking in the Monastery: (13)
As of 2015-07-31 20:09 GMT
Find Nodes?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...

    Results (281 votes), past polls