Назад | Перейти на главную страницу

Запустить сеанс FTP из сценария bash

Я пытаюсь написать сценарий BASH, чтобы проверить, работает ли мой FTP-сайт. Поэтому я хочу, чтобы сценарий bash подключался к FTP-сайту, входил в систему с фиктивной учетной записью и перенаправлял вывод в файл, который затем можно было использовать с помощью grep, чтобы подтвердить успешность входа.

(Я знаю, что помещать user / pass в файл не рекомендуется, но эта фиктивная учетная запись привязана к одному пустому каталогу и не может выйти в оболочку, и в любом случае я единственный пользователь, который может войти в оболочку Подсказка.)

Я использую оболочку BASH в Ubuntu.

Я создал файл "ftp-dummy", который выглядит так

username  
password

Затем я сделал это из подсказки:

adam$  ftp my.ftpsite.com  < ftp-dummy

Это не работает - я не вижу нормального приветственного сообщения, а вывод такой:

Password:Name (my.ftpsite.com:adam) :

Я попытался удалить пробел между <и именем файла - результат тот же.

Если я перенаправляю вывод в тестовый файл, тестовый файл показывает:

Name (my.ftpsite.com:adam): ?Invalid command

И я все еще получаю запрос пароля на STDOUT

Я также пробовал использовать эхо и получил тот же результат:

echo -e "username \npassword \n" | ftp my.ftpsite.com 

Я не понимаю, почему я не вижу нормального приветственного сообщения или почему ввод не считывается из файла. Любая помощь приветствуется.

Спасибо,
Адам

используйте скрипт-клиент ftp, например lftp.

вы используете это так:

lftp -u login,pass host.com -e "get file.txt;exit "

или даже проще - используйте wget:

wget -O file ftp://login:pass@host.com/file.txt

Раньше я сталкивался с проблемами перенаправления STDIN с ftp-клиентами UNIX. Хотя я часто пытаюсь их проработать, я обнаружил ожидать чтобы лучше подходить во многих ситуациях.

Вы также можете взглянуть на nagios-plugins check_ftp, так как вы потенциально можете вытащить его и использовать в своих целях. Часто нет необходимости изобретать велосипед.

Чтобы конкретно ответить на ваш вопрос, FTP netrc файл предоставит данные аутентификации от вашего имени.

Есть флаг на ftp который можно использовать для остановки автоматического запроса пароля при отправке команды пользователя.

человек ftp

ftp -n

Затем вы можете передать свои команды (включая пользователя и пароль) на ftp.