#perl #ssh
#perl #ssh
Вопрос:
Это может быть простой запрос, но я все еще не совсем понимаю это.
В моем скрипте я подключаюсь к SFTP-клиентскому серверу с помощью Net::SSH::Perl
модуля. Ранее я использовал Net::SFTP
, но был удален из скрипта, так как внезапно он перестал работать и выдавал ошибку.
Когда я использовал Net::SFTP
, чаще всего я использовал приведенную ниже команду для размещения / получения файлов с удаленного сервера.
$sftp->put("/home/ftpford/ftpcon/conout/$file","/Uti_Integrator/READYFORPICKUP/PENDING/$file");
Но я не уверен в том, как получить / поместить файлы с помощью Net::SSH::Perl
.
Кто-нибудь может подсказать? Я перепробовал много способов и даже пытался выполнить поиск в Google, но мне ничего не ясно.
И, пожалуйста, обратите внимание, что у меня нет прав на установку новых модулей на моем сервере. Я хочу получить / поместить файлы, используя вышеупомянутый модуль.
Комментарии:
1. Какое сообщение об ошибке вы получаете с Net:: SFTP?
2. Привет @JohnC, ниже приведена ошибка. «Не найден соответствующий шифр: клиент 3des-cbc, blowfish-cbc, сервер arcfour aes128-ctr, aes128-cbc, aes192-ctr, aes192-cbc, aes256-ctr, aes256-cbc в /usr/lib/perl5/site_perl/5.8.8/Net /SSH /Perl /SSH2. в строке 92 pm не удается найти метод объекта «_session_channel» через пакет «Net::SSH::Perl::SSH1» в /usr/lib/perl5/site_perl/5.8.8/Net /SFTP.строка 78 pm. Не удается найти объектный метод «_session_channel» через пакет «Net::SSH::Perl::SSH1″ в / usr/lib /perl5/site_perl/5.8.8/Net /SFTP.pm строка 78.»
3. Это, по-видимому, подразумевает, что Net:: SFTP использует Net:: SSH:: Perl, но проблема в том, что Net:: SSH :: Perl не может подключиться, потому что нет общих шифров.
4. Да, здесь говорится, что сервер поддерживает только шифры AES, в то время как Net:: SSH ::Perl не поддерживает шифры AES. Должно быть, кто-то изменил конфигурацию ssh-сервера. Спросите администратора, может ли он отменить эти изменения, чтобы разрешить один из поддерживаемых вами шифров (3des-cbc, blowfish-cbc, arcfour).
5. Привет @jcaron есть ли вероятность, что внезапно мы столкнемся с такого рода ошибками. Потому что раньше это работало отлично несколько дней назад (почти с 1 года). Есть ли способ решить эту проблему? Это влияет на передачу всего файла. Теперь я в замешательстве от того, как поступить с этим. Поскольку Net:: SFTP выдает ошибку и не может установить новые модули (не знаю, как получить новые модули в мой собственный каталог на сервере Unix).
Ответ №1:
Я не думаю, что это стандартная функция Net:: SSH ::Perl.
Один из вариантов — использовать другие модули, которые это делают (вам не обязательно устанавливать их в системные каталоги, вы можете разместить их в своих собственных каталогах, если вы включите их через PERL5LIB
или use lib
.
Другой вариант (который в строгом смысле отвечает на ваш вопрос) заключается в его эмуляции. Вы можете попробовать просто запустить cat >$destination_file
на удаленном компьютере через Net::SSH::Perl, а затем отправить содержимое файла по ssh-соединению.
Конечно, обработка ошибок и тому подобное может быть не очень простым…
Кстати, вы говорите нам, что пробовали много вещей, но не говорите, какие именно и с какими проблемами вы столкнулись.
Комментарии:
1. Привет @jcaron Я пробовал устанавливать другие модули, такие как Net:: OpenSSH и Net:: SCP, но безуспешно. И я попробовал ниже $ ssh2-> cmd («cp / home / ftpford / ftpcon / conout /$file / Uti_Integrator / ОТЧЕТЫ SOH / ОЖИДАЮЩИЕ / $ file») И снова я попробовал с Net:: SFTP и смог увидеть приведенную ниже ошибку. Тем не менее, я был сбит с толку, почему вдруг я получаю приведенную ниже ошибку при использовании Net:: SFTP, которая раньше работала идеально.
2. Ошибка, как показано ниже: «Не найден соответствующий шифр: клиент 3des-cbc, blowfish-cbc, сервер arcfour aes128-ctr, aes128-cbc, aes192-ctr, aes192-cbc, aes256-ctr, aes256-cbc в /usr/lib/perl5/site_perl/5.8.8/Net /SSH /Perl / SSH2.pm строка 92 Не удается найти метод объекта «_session_channel» через пакет «Net::SSH::Perl::SSH1» в / usr/lib/perl5/site_perl/5.8.8/Net /SFTP.pm строка 78. Не удается найти объектный метод «_session_channel» через пакет «Net::SSH::Perl::SSH1″ в / usr/lib /perl5/site_perl/5.8.8/Net /SFTP.pm строка 78.»