0

Net::SFTP を使用してリモート サーバーに接続しようとしています。

私のスクリプトは次のとおりです。

my %args = ( 
    ssh_args => { 
       user => 'canneu_scp', 
       identity_files => [ '/home/home1/cgrshah/responsys/capgemini.private' ], 
       debug => 1, 
 } );

my $targetserver='files.responsys.net';

my $sftp = Net::SFTP->new($targetserver, %args) 
      or die "could not open connection to $targetserver\n";

しかし、これを実行すると、次のようなエラーが表示されます。

 Not an ARRAY reference at /usr/lib/perl5/site_perl/5.8.1/Net/SFTP.pm line 36.

誰でもこれで私を助けることができますか?

4

1 に答える 1

5

これは暗闇の中でのワイルドショットですが、userオプションは に渡されたハッシュにあるべきではありませんssh_args。それは同じレベルにあります。代わりに次のコードを使用してみてください。

my $sftp = Net::SFTP->new(
    $targetserver,
    user     => 'canneu_scp', 
    ssh_args => { 
        identity_files => [ '/home/home1/cgrshah/responsys/capgemini.private' ], 
        debug => 1,
    } 
) or die "could not open connection to $targetserver\n";

上記のコードでさらに進んだようですが、 のバージョンがMath::BigInt古すぎるために問題が発生しています。前進する方法は 3 つあります。

  1. DSA キーの代わりに RSA キーに切り替える
  2. Math::BigIntバージョン 1.78 以降の RPM を見つける
  3. のコピーを手動でインストールするMath::BigInt

3 番目のオプションには多くの落とし穴があります。このオプションを使用する場合は、次の手順をお勧めします。

  1. インストールApp::cpanminus
    1. gccがインストールされていることを確認してください
    2. 走るwget -O- http://cpanmin.us | perl - --local-lib=~/perl5 App::cpanminus
    3. ~/perl5/binパスに追加
  2. Math::BigIntでホームディレクトリにインストールcpanm --local-lib=~/perl5 Math::BigInt
  3. スクリプトの先頭に追加use lib "$ENV{HOME}/perl5";して、新しいモジュールを見つけられるようにします
于 2010-10-19T15:10:20.170 に答える