Beefy Boxes and Bandwidth Generously Provided by pair Networks
go ahead... be a heretic
 
PerlMonks  

using Net::OpenSSH in a MCE worker thread

by Andy16 (Acolyte)
on Jun 28, 2013 at 09:04 UTC ( #1041192=perlquestion: print w/ replies, xml ) Need Help??
Andy16 has asked for the wisdom of the Perl Monks concerning the following question:

Hi, I'd like to use a OpenSSH connection in a MCE worker thread.

Doing so - the worker thread just exists after the "new".

First debugging:
not giving user/pwd it stops showing the password prompt.
giving user and pwd to the new - it crashes.

Is there any hassle with signals?
Any way out of that or how to do more debugging?

thanks for help, monks! :->


$self->sendto('stdout', "child($wid): doing ssh\n"); $ssh = Net::OpenSSH->new( $device, user => $sshuser, passwd => $sshpwd, master_opts => [-o => "StrictHostKeyChecking=no"], master_stderr_discard => 1 ); $self->sendto('stdout', "child($wid): did ssh - not shown!!! \n"); +



and after some more digging: if I
use IO::Pty;
in the main prog already - everything is fine!
So there is not a signal but a coding issue in loading that lib during runtime..

Comment on using Net::OpenSSH in a MCE worker thread
Download Code
Re: using Net::OpenSSH in a MCE worker thread
by kcott (Abbot) on Jun 28, 2013 at 09:20 UTC
Re: using Net::OpenSSH in a MCE worker thread
by salva (Abbot) on Jun 28, 2013 at 10:01 UTC
    Activate the module debugging mode...
    $Net::OpenSSH::debug = -1;
    and post here what you get.
      Hi - sorry, but
      => debug did not do any lines
      => no furhter message than "just gone" ....

      meanwhile (see above) I'm sure it is realted to an eval loading a missing pm...

      thanks!

        taken from OpenSSH.pm


        sub _load_module { my ($module, $version) = @_; $loaded_module{$module} ||= do { do { local ($@, $SIG{__DIE__}); eval "require $module; 1" } or croak "unable to load Perl module $module"; 1 }; if (defined $version) { local ($@, $SIG{__DIE__}); my $mv = eval "\$${module}::VERSION" || 0; (my $mv1 = $mv) =~ s/_\d*$//; croak "$module version $version required, $mv is available" if $mv1 < $version; } 1 }


        somewhere in here it breaks... if pm not preloaded and in MCE context.

      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.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://1041192]
Approved by hdb
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others pondering the Monastery: (17)
As of 2015-07-02 12:46 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

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









    Results (36 votes), past polls