in reply to Re^2: Net::SSH2 Interactive command example
in thread Net::SSH2 Interactive command example
Seems that this module is somwhat quirky, I could get it work only with some delay between sending a command and reading its output, and then the diamond operator doesn't seem to work on the $chan2 filehandle, but the read method does (linux, perl5.8.8):
#!/usr/bin/perl use Net::SSH2; my $ssh2 = Net::SSH2->new(); $ssh2->connect('somehost') or die; if ($ssh2->auth_password('user','password')) { #shell use my $chan2 = $ssh2->channel(); $chan2->shell(); print $chan2 "uname -a\n"; select(undef,undef,undef,0.2); my ($len, $buf); print $buf while ($len = $chan2->read($buf,512)) > 0; print $chan2 "who\n"; select(undef,undef,undef,0.2); print $buf while ($len = $chan2->read($buf,512)) > 0; $chan2->close; } else { warn "auth failed.\n"; }
Those selects() could be replaced with calls to $chan2->poll(), which usage to find out is left as an excercise to the reader...
--shmem
_($_=" "x(1<<5)."?\n".q·/)Oo. G°\ /
/\_¯/(q /
---------------------------- \__(m.====·.(_("always off the crowd"))."·
");sub _{s./.($e="'Itrs `mnsgdq Gdbj O`qkdq")=~y/"-y/#-z/;$e.e && print}
|
|---|