2017-02-01 2 views
0

Я пытаюсь использовать NET :: SSH для выполнения команды в удаленной системе Ubuntu из perl.I получил желаемый результат, но вместе с ним скрипт печатает множество нежелательных данных Как мы можем остановить это. Заранее спасибо.Остановить NET :: SSH2 от печати нежелательных данных

Вот образец нежелательных данных (это же печатает сотни раз для каждого исполнения).

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

Запустите этот код без этой строки '$ ssh2-> debug (1);', я думаю, это печатает ваши нежелательные данные. – AbhiNickz

+0

Вы правы AbhiNickz $ ssh2-> debug (1) на самом деле печатает этот материал. Я изменил это на $ ssh-> debug (0), и теперь он работает нормально. Спасибо. – Vsreddy

ответ

0

Изменено $ssh2->debug(1); к $ssh2->debug(0); и теперь его печать все необходимые данные.

Смежные вопросы