Thanks for the quick reply
Here is the full logic.
$session = Net::SSH2->new(); $rc = $session->connect($target_ip, $target_port, Timeout=>4000) ; $session->auth_password($username, $passwd) ; $chan = $session->channel(); $chan->shell() ; print $chan $cmd . " \n" ; my @poll = ({handle=>$chan, events=>['in', 'ext', 'channel_closed']}); my $job_done = 1; my $status; while ($job_done > 0) { $session->blocking(0) ; $session->poll(1, \@poll) ; if ($poll[0]->{revents}->{in}) { while (<$chan>) { $resp .= $_ ; } $status = 0 ; if ($chan->eof()) { $status = $chan->exit_status() ; } } if ($poll[0]->{revents}->{ext}) { my ($len, $buff) ; while ($len = $chan->read($buff, 1024, 1)) { $resp .= $buff ; } if (! $resp) { $status = $chan->exit_status() || 0 ; } } elsif ($poll[0]->{revents}->{channel_closed}) { while (<$chan>) { $resp .= $_ ; } $status = $chan->exit_status() ; } if ($chan->eof() || $poll[0]->{revents}->{ext} || ($poll[0]->{revents}->{channel_closed} && $status == 0)) { $chan->close ; $job_done = -1; } $session->blocking(1) ; } print "\nresponse : $resp";
The problem here is, commands that take more than 5 seconds to respond returns null. Whereas, commands that takes less time to respond are returning the exact result
This is where sleep comes into picture for me
Please help.
In reply to Re^2: Net::SSH2 channel returns no output
by rama133101
in thread Net::SSH2 channel returns no output
by rama133101
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |