It's the shell method of Net::SSH::Channel, as zentara points out below, but alas, his
code doesn't seem to work for me.
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}
|