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.
In reply to Re^2: using Net::OpenSSH in a MCE worker thread
by marioroy
in thread using Net::OpenSSH in a MCE worker thread
by Andy16
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |