$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";