2017-03-17 1 views
0

Net :: SSH2経由でリモートデバイスに接続しようとしています。 $ channel-> blocking(0)メソッドを使用している場合、接続と認証が成功したとしても、デバイスからの出力は得られません。 $ channel-> blocking(0)を使用しないと、出力が得られますが、プロンプトが点滅し続けます。Net :: SSH2を使用してリモートデバイスから出力を取得できません

コード

use Net::SSH2; 
use strict; 

$ssh = Net::SSH2->new() 

$ssh->connect('xx.xx.xx.xx')) 

$ssh->auth(username => 'xxxx', password => 'xxxx')) 

my $channel = $ssh->channel() or do { print" [LOG ERROR]: Failed to create channel. Exiting ...\n"}; 

$channel->blocking(0); 

$channel->shell() ; 

print $channel "show status \n"; 

while(<$channel>) 
    { 
    print $_; 
    } 

$channel->close(); 

$ssh->disconnect(); 

誰かが助けてくださいすることができます。

+0

あなたが 'shell'を使うなら、あなたはリモートシェルに"話す "必要があります。それは立ち往生しません、それはあなたがより多くのコマンドを入力するのを待っているだけです。 – salva

答えて

0

debugがトラブルシューティングのお手伝いをする場合があります。特別な理由がない場合はshellexecに置き換えてみてください。このexampleを採用することができます。

use warningsも常に役に立ちます。

+0

execを使用する1つのコマンドしか実行できません。私の要求に従って、私は複数のコマンドを読む必要があります。あなたは助けてください。 –

+0

残念ながら、私はperl Net :: SS2に関連する[issue](https://github.com/Juniper/netconf-perl/issues/29)を持っているため、[ncclient](https: //github.com/ncclient/ncclient) – palik

関連する問題