2013-02-27 2 views
0
ftp ipaddress 
bin 
hash 
cd path 
get filename 
quit 

Я хочу, чтобы эта строка выполнялась в сценарии оболочки, только первая строка выполняется после ввода имени пользователя и пароля, остальные строки не выполняются, а элемент управления застрял на ftp > promptкак ftp удаленный сервер через запуск сценария оболочки

ответ

0

Как только ваш скрипт вызывает программу ftp, оболочка теряет контроль до тех пор, пока программа ftp не завершится. Поэтому вам нужно использовать какую-то новую технику. Один из способов - программа expect, о которой вы можете получить здесь: https://stackoverflow.com/a/12598169/4323. Другой способ - использовать более «скриптовый» FTP-клиент, такой как lftp на Linux, который имеет определенные функции, позволяющие использовать сценарий, в котором вы собираетесь работать.

+0

Спасибо Джон позвольте мне попробовать ваши пути и ответит вам обратно –

0

Чтобы использовать это в скрипте, а не в интерактивной оболочке, вам нужно использовать неинтерактивный FTP-клиент. ncftp - это тот, который вы можете проверить.

+0

К сожалению он не работает это просто беру ftp и sftp –

0

Или вы можете использовать оболочку «здесь» документ:

#!/bin/bash 

ftp -in <<EOS 
user pswd 
bin 
hash 
cd path 
get filename 
quit 
EOS 

здесь документ посылает все с помощью стандартного ввода открытой программы, так же, как если бы вы ввели его в командной строке. Обратите внимание, что ftp-клиенты могут быть фиктивными, и каждый из них, похоже, имеет собственный набор gotchas, поэтому, вероятно, потребуется некоторое экспериментирование и использование man ftp.

Похоже, это придумал раньше на Stackoverflow, вы можете прочитать how to ftp multiple file using shell script

IHTH

+0

Я уже использовал оболочку, которую вы предоставили, но она не работает. –

+0

Я думаю, что Джон прав, как только он вызывает ftp, оболочка теряет контроль до тех пор, пока программа ftp не завершится –

+0

Решение проблем с сценариями ftp-клиента - это то, что вы можете потратить на , У меня не будет времени, чтобы отладить это подробно. Я настоятельно рекомендую вам прочитать man-страницу вашего ftp-клиента. И чтобы вы просмотрели любой из 401 вопросов здесь, в stackoverflow, которые можно найти, выполнив поиск '[unix] ftp'. Я включил хороший S.O. в моем ответе это должно быть большой помощью. ** Попробуйте изменить строку вызова на 'ftp -in << EOS' **. Удачи. – shellter

Смежные вопросы