in reply to Re^2: Net::SSH2 Interactive command example
in thread Net::SSH2 Interactive command example

Sorry for the delay in getting back to you. Apologies I just could not get to a computer yesterday. The Code I was using was the one taken from the perlmonks web-site.
my $chan2 = $ssh2->channel(); $chan2->shell(); print $chan2 "hostname -a\n"; print "LINE : $_" while <$chan2>; print $chan2 "tail -f /var/adm/messages"; print "LINE : $_" while <$chan2>; $chan2->close;
(In fact I tried various options on that perlmonks page without success.) The only difference being the "tail -f" command I used instead of "uname" or "who". I notice when I do a "tail -50000". The channel would stay open for as long as it took to get through the 50000 lines. So there is no problem with keeping the channel open as such.I think the problem lies when it is being an interactive real-time command like "tail -f" or "snoop" when I want to keep the channel up and for some reason it takes a snap-shot,or what's in it's buffer and then closes. Any help, greatly appreciated !!!!!!!!!!!!!!!!!!!!!!!. U235sentinel have you ever come across this before?. Regards, Shooter

Replies are listed 'Best First'.
Re^4: Net::SSH2 Interactive command example
by u235sentinel (Hermit) on Jun 25, 2007 at 20:01 UTC
    print $chan2 "tail -f /var/adm/messages";
    print "LINE : $_" while <$chan2>;
    $chan2->close;

    I'm guessing it thinks it's finished then closes the channel. I didn't realize you meant you needed it open say for hours (for example). My need for the module was to inventory (or change something ) across hundreds of Unix and Linux servers and report the results. It's quick. We can create user accounts and set the password across 500 servers in just a few minutes. Eventually they will get Vintella working and replace the user creation piece. Someday :-)

    Have you tried running with Net::SSH2::Debug enabled? I'm curious if it might shed a clue there. Or even printing $! if there was an error somewhere. If it runs 50,000 lines then why not until we tell it to stop.

    I haven't run into this myself. The code is still under a year old and not even 1.0 yet. So I'm sure there are surprises yet to be discovered :-)

    I'll poke around and see if I can find something that might help us understand how to do this. Cross your fingers.

    It might be a good idea to post this question on the net::ssh2 forum. David Robbins has popped on there to help answer questions about the module. It was mentioned to try using POLL(). Personally I never got it working properly (neither have several other developers). I'm feeling that piece of the code is still broken. Perhaps in the next libssh2 update it will be fixed.