Stop NET::SSH2 from printing unwanted data

131 views Asked by At

I am trying to use NET::SSH to execute a command in a remote Ubuntu system from perl.I got the desired output but along with it the script is printing lots of unwanted data.How can we stop it. Thanks in advance.

Here is the sample unwanted data (same this is getting printed hundreds of times for each execution).

Net::SSH2::Channel::read(size = 1, ext = 0)
- read 1 bytes
- read 1 total 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)
- read 1 bytes
- read 1 total 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)
- read 1 bytes
- read 1 total

And my code is

use warnings;
use strict;
use NET::SSH2;
use Data::Dumper;
my $auth;
sub is_sshalive;

my $host = "";               # use the ip host to connect
my $user = "ubuntu"; # your account
my $cmd;
my $ssh2 = Net::SSH2->new();
$ssh2->debug(1);
$ssh2->connect($host,"22") or die "connect failed";
$ssh2->auth_publickey(
       'ubuntu',
       'publickey',
       'privatekey'

    ) or die "auth failed";


        print "\n Executing command...\n";

        $cmd = "ls -al";
        print " ==> Running $cmd\n";

        if(is_sshalive($ssh2) == 1) {
                print "\nSSH connection died";
                exit 1;
        } else {

         run_testsuite($cmd, $ssh2);
        # echo $ssh2->exec("ls");

        }

print "test passed done 0\n";


sub run_testsuite {
    my $cmd = $_[0];
    my $ssh2 = $_[1];


    my $chan2 = $ssh2->channel();
    $chan2->shell();
    my @arr;
    print $chan2 "$cmd \n";
    print $chan2 "pwd \n";
    push @arr,$_  while <$chan2>;
    print @arr;


    $chan2->close;
    return 0;
}

sub is_sshalive {
   my $ssh2 = $_[0];
    print "isalive-shiva";
    if ($ssh2->poll(1000) == 0) {
        return 0; # passed
    } else {
        return 1; #failed
    }
    return 0;
}
1

There are 1 answers

0
Vsreddy On BEST ANSWER

Changed $ssh2->debug(1); to $ssh2->debug(0);and now its printing all appropriate data.