Hi all,
MCE has gone through several revisions since the time the OP tested this. I tested without IO::Pty on my box. Amazingly, running (yum install perl-Net-OpenSSH) installed the package without checking the perl-IO-Tty dependency.
Workers in older MCE revisions closed STDOUT/STDERR prior to exiting. That was fix some time back.
$ ./mce_openssh.pl
child(1): doing ssh
unable to load Perl module IO::Pty: Can't locate IO/Pty.pm in @INC (@I
+NC contains: /media/psf/shm/trunk/examples/../lib /usr/local/lib64/pe
+rl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/pe
+rl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at (eval 10) lin
+e 1, <__ANONIO__> line 2.
at /usr/share/perl5/vendor_perl/Net/OpenSSH.pm line 756.
Btw, the script works after installing IO::Tty (yum install perl-IO-Pty).
my $sshuser = 'remote_userid';
my $sshpwd = 'remote_passwd';
my $device = 'remote_device';
use MCE::Flow max_workers => 1;
use Net::OpenSSH;
mce_flow sub {
my $wid = MCE->wid;
MCE->sendto('stdout', "child($wid): doing ssh\n");
my $ssh = Net::OpenSSH->new(
$device,
user => $sshuser,
passwd => $sshpwd,
master_opts => [-o => "StrictHostKeyChecking=no"],
master_stderr_discard => 1
);
MCE->sendto('stdout', "child($wid): did ssh - not shown!!! \n");
};
In summary, STDERR output is no longer lost with current MCE releases.
|