2017-03-14 8 views
1

私は Net::SSH2 を以下のPerlコードで使用しようとしていますが、このエラーが発生しています。 xx.xx.xxx.xxへの接続に失敗しました::SSH:test.plライン9で不正なファイルディスクリプタtest.pl線9
ネット:: SSH2で廃止されて無効コンテキストで接続呼び出しvoidのコンテキストでの呼び出しの呼び出しは非推奨です

use strict; 

use Net::SSH2; 
#use Net::SSH2::Expect; 

#my $Hostname = 'xx.xx.xx.xx'; 

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

#$ssh->timeout(10); 

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

誰かがこれで私を助けてくださいことはできますか?

+3

それはあなたが使用したい: '$ ssh->( 'XX.XX.XX.XX')接続または$ ssh-> die_with_error;' – ikegami

+2

ネット:: SSH2は、あなたがしたいので、非推奨の警告があります'connect'の戻り値を確認してください。それは '$ ssh-> connect(...)またはssh2-> die_with_error'を行うことを示唆しています。あなたはそれをやっていないので、それ自体が直接死ぬ、また警告を出します。 _Badファイル記述子_エラーは本当の問題です。 – simbabque

+1

@simbabque、 "*ファイル記述子のエラーが間違っています。" voidコンテキスト警告を出力すると、エラーが発生する可能性があります。 OPは 'または$ ssh-> die_with_error'を追加してプログラムを再実行することから始めるべきです。さらに、ボイドの文脈では、それが問題ではないときでも、常に「接続に失敗しました」と表示されます。 – ikegami

答えて

0

die_with_errorを使用する場合、またはdie_with_errorを使用して接続メソッドを内部に保持すると、コードを修正できました。

use strict; 

use Net::SSH2; 

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

if($ssh->connect('xx.xx.xx.xx')) 
    { 
    print "successfully connected"; 

    $ssh->auth_password('username','password') or $ssh->die_with_error; 

    } 
+0

'connect'が失敗すると、あなたのコードは引き続き' auth_password'を呼び出します。それは意味をなさない。 – salva

関連する問題