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



我正在尝试使用NET::SSH从perl在远程Ubuntu系统中执行命令。我得到了所需的输出,但脚本随之打印了许多不需要的数据。我们怎么能阻止它。提前谢谢。

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

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 $cmdn";
        if(is_sshalive($ssh2) == 1) {
                print "nSSH connection died";
                exit 1;
        } else {
         run_testsuite($cmd, $ssh2);
        # echo $ssh2->exec("ls");
        }
print "test passed done 0n";

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);,现在打印所有适当的数据。

相关内容

最新更新