Почему Perl Net :: SFTP-> new жалуется на "Не ссылка на массив"? - PullRequest
0 голосов
/ 19 октября 2010

Я пытаюсь использовать 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.

Кто-нибудь может мне помочь с этим?

1 Ответ

5 голосов
/ 19 октября 2010

Это просто дикий выстрел в темноте, но опция 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 слишком старая Я вижу три способа двигаться вперед:

  1. переключиться на ключ RSA вместо ключа DSA
  2. найти скорость вращения Math::BigInt версии 1.78 или более поздней
  3. установить вручную копию Math::BigInt

Третий вариант имеет много подводных камней, и если вы решите пойти с ним, я бы предложил следующие шаги:

  1. установка App::cpanminus
    1. убедитесь, что у вас установлен gcc
    2. пробег wget -O- <a href="http://cpanmin.us" rel="nofollow">http://cpanmin.us</a> | perl - --local-lib=~/perl5 App::cpanminus
    3. добавить ~/perl5/bin на свой путь
  2. установить Math::BigInt в свой домашний каталог с помощью cpanm --local-lib=~/perl5 Math::BigInt
  3. добавьте use lib "$ENV{HOME}/perl5"; в начало вашего скрипта, чтобы он мог найти новые модули
...