2017-02-01 11 views
0

リモートのUbuntuシステムでperlからコマンドを実行しようとするとNET :: SSHを使用しようとしています.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(0);$ssh2->debug(1);を変更し、現在その適切なすべてのデータを印刷しています。

関連する問題