BEGIN { push(@INC,'C:\Perl64\site\lib'); } use warnings; use strict; use NET::SSH2; sub is_sshalive; my $host = "XXXX"; # use the ip host to connect my $user = "yyyy"; # your account my $pass = "zzzz"; # your password my $cmd; my $ssh2 = Net::SSH2->new(); $ssh2->debug(1); if ($ssh2->connect($host)) { if ($ssh2->auth_keyboard($user,$pass)) { print "\n Executing command...\n"; $cmd = "pwd"; print " ==> Running $cmd\n"; if(is_sshalive($ssh2) == 1) { print "\nSSH connection died"; exit 1; } else { run_testsuite($cmd, $ssh2); } } else { warn "ssh auth failed.\n"; exit 1; } } else { warn "Unable to connect Host $host \n"; exit 1; } print "test passed done 0\n"; sub run_testsuite { my $cmd = $_[0]; my $ssh2 = $_[1]; my $chan2 = $ssh2->channel(); $chan2->shell(); print $chan2 "$cmd \n"; print "LINE : $_" while <$chan2>; $chan2->close; return 0; } sub is_sshalive { my $ssh2 = $_[0]; if ($ssh2->poll(1000) == 0) { return 0; # passed } else { return 1; #failed } } Below is the partial test result where it is displaying Error Net::SSH2::Channel::read(size = 1, ext = 0) - read 1 bytes - read 1 total LINE : Error: "pwd" is not a recognized command Net::SSH2::poll: timeout = 250, array[1] - [0] = channel - [0] events 1 - libssh2_poll returned 1 - [0] revents 1 Net::SSH2::Channel::read(size = 1, ext = 0)