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.