Beefy Boxes and Bandwidth Generously Provided by pair Networks
Keep It Simple, Stupid
 
PerlMonks  

Re^2: Need Help on Net::SSH2 Module Usage on Windows

by tarunmudgal4u (Sexton)
on Aug 17, 2012 at 13:07 UTC ( #987963=note: print w/ replies, xml ) Need Help??


in reply to Re: Need Help on Net::SSH2 Module Usage on Windows
in thread Need Help on Net::SSH2 Module Usage on Windows

Hi, I want to fire multiple system commands. Also, second system command would depend on the first system command output and so on. therefore, I guess, we cannot use exec here as exec overlays the parent process. We can use shell method then. If it is then can you please help me out to find out details about this shell method?


Comment on Re^2: Need Help on Net::SSH2 Module Usage on Windows
Re^3: Need Help on Net::SSH2 Module Usage on Windows
by zentara (Archbishop) on Aug 18, 2012 at 09:03 UTC
    See Salva's advice in channel SSH2. You probably are better off running a background process on the server itself. You exec with a nohup and detach the pid back into the background. You can log all output. Why do you need the logic of command processing done on the remote machine thru an unreliable network? Launch your control script right on the server, and come back later and get the log of it running.

    I'm not really a human, but I play one on earth.
    Old Perl Programmer Haiku ................... flash japh

      hi zentara.. thanks for your reply.. first of all, I want to make ssh from a windows machine to windows machine. So, here, I think, I can't run my commands in background. I tried one example using shell method you described but it was not working. It got stuck meanwhile executing it. Please see below snippet of code-

      my $ssh2 = Net::SSH2->new(); $ssh2->debug(1); if ($ssh2->connect($host)) { if ($ssh2->auth_password($user,$pass)) { #shell use print "connetced\n"; my $chan = $ssh2->channel() and print "channel created\n"; $chan->shell() and print "shell method called\n"; $chan->blocking(1) and print "blocking set ot 1\n"; $chan->write("dir\n") and print "dir fired\n"; select(undef,undef,undef,0.2) and print "select command fired\n" +; print $buf while ($len = $chan->read($buf,512)) > 0;
      and the output of this program is-
      C:\Compatibility_Automation_Temp>perl SSH2.pl connetced libssh2_channel_open_ex(ss->session, pv_channel_type, len_channel_type +, window_size, packet_size, ((void *)0) , 0 ) -> 0x1c70aec channel created shell method called blocking set ot 1 dir fired Net::SSH2::Channel::read(size = 512, ext = 0) ##here, this program stuck
      Then I went through Net::SSH2::Channel module, but, there as well I didn't understand anything e.g.-
      sub shell { $_[0]->process('shell') }
      what is this subroutine doing? I didn't understand it as I didn't see any method named "process" specified there. Could you please give me an idea what I'm doing wrong and how can I move ahead with the better understanding of this module.

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others making s'mores by the fire in the courtyard of the Monastery: (7)
As of 2014-09-15 03:52 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    My favorite cookbook is:










    Results (145 votes), past polls