停止 NET::SSH2 打印不需要的数据

Stop NET::SSH2 from printing unwanted data

我正在尝试使用 NET::SSH 在来自 perl.I 的远程 Ubuntu 系统中执行命令得到了所需的输出,但脚本同时打印了很多不需要的 data.How 我们能阻止它吗?提前致谢。

这是不需要的数据示例(每次执行都会打印数百次)。

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

我的密码是

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;
}

已将 $ssh2->debug(1); 更改为 $ssh2->debug(0);,现在它会打印所有适当的数据。