为什么Perl的Net :: SFTP-> new抱怨"不是ARRAY参考"?

0 perl perl-module

我正在尝试使用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";
Run Code Online (Sandbox Code Playgroud)

但是当我运行这个时,我得到一个错误说明:

 Not an ARRAY reference at /usr/lib/perl5/site_perl/5.8.1/Net/SFTP.pm line 36.
Run Code Online (Sandbox Code Playgroud)

谁能帮我这个?

Cha*_*ens 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";
Run Code Online (Sandbox Code Playgroud)

听起来上面的代码让你更进一步,现在你遇到了问题,因为你的版本Math::BigInt太旧了.我认为有三种方法可以向前发展:

  1. 切换到RSA密钥而不是DSA密钥
  2. 找到Math::BigInt版本1.78或更高版本的RPM
  3. 手动安装副本 Math::BigInt

第三种选择有很多陷阱,如果你决定使用它,我建议采取以下步骤:

  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";到脚本的开头,以便它可以找到新模块