Как я могу использовать Perl Net :: SFTP :: Foreign в Windows? - PullRequest
1 голос
/ 25 февраля 2010

Я установил Net :: SFTP :: Foreign в моем perl 5.8.8, и я пытаюсь войти на защищенный FTP-сервер, используя следующий код:

use Net::SFTP::Foreign;
my $host = $tt->get_ftp_server_address();
my $sftp = Net::SFTP::Foreign->new("$host",
                                     {user=>$tt->get_location_user_name(),
                                     password=>$tt->get_location_user_password(),
                                     port=>'22'});

Строка, на которой я пытаюсь позвонить Net::SFTP::Foreign->new, не проходит, не выдавая никакой ошибки.

Ответы [ 6 ]

3 голосов
/ 25 февраля 2010

Я реагирую на ваш комментарий "Нужно ли устанавливать что-либо еще на компьютер с Windows для правильной работы этой библиотеки?" readme утверждает, что вам необходимо иметь внешний клиент SSH2, доступный из вашей PATH . Может ли это быть проблема? Модуль известен для работы на Windows.

2 голосов
/ 25 февраля 2010

В дополнение к возможности включения отладки, обратите внимание, что документация четко заявляет:

Явная проверка ошибок должна включаться всегда после вызова конструктора:

my $sftp = Net::SFTP::Foreign->new(...);
$sftp->error and die "SSH connection failed: " . $sftp->error;

Таким образом, распечатка этого сообщения об ошибке будет первым шагом в диагностике проблем.

2 голосов
/ 25 февраля 2010

Вы также можете установить для debug значение 1 в% args для конструктора

Из Net :: SFTP :: Foreign doc :

debug => 1, если установлено истинное значение, сообщения отладки будут напечатаны из. По умолчанию установлено значение false.

Редактировать : Пытаться $Net::SFTP::Foreign::debug = 1;

Из источника версии 1.56_04:

мы делаем $ Net :: SFTP :: Foreign :: Helpers :: отладку псевдонима для $ Net :: SFTP :: Foreign :: debug, чтобы пользователь мог установить его без знать что-нибудь о пакете помощников!

our $ debug;

2 голосов
/ 25 февраля 2010

Я думаю, что конструктор ожидает хеш-таблицу, а не ссылку на хеш. Попробуйте удалить скобки в вашем звонке:

my $sftp = Net::SFTP::Foreign->new("$host",
                                     user=>$tt->get_location_user_name(),
                                     password=>$tt->get_location_user_password(),
                                     port=>'22');
1 голос
/ 27 декабря 2013

Лучший способ запустить Net :: SFTP :: Foreign в Windows - это использовать Net :: SSH2. Использование этого пакета позволяет поддерживать пароль, а также все другие функции, которые в противном случае поддерживаются на платформах Linux и Unix.

Дополнительная информация и базовая реализация (с кодом) объяснены очень хорошо: https://metacpan.org/pod/Net::SFTP::Foreign::Backend::Net_SSH2

1 голос
/ 25 февраля 2010

Аутентификация по паролю не поддерживается в Windows, если вы не используете Cygwin Perl. Вам также нужно будет установить Expect.

Версии разработки (в настоящее время 1.56_08) можно использовать с Net :: SSH2, поэтому вы получаете полнофункциональный SFTP-клиент и аутентификацию по паролю.

Net :: SFTP :: Foreign также может работать с plink (утилитой, поставляемой в комплекте с Putty), эта комбинация поддерживает аутентификацию по паролю в Windows, но не полностью безопасна.

...