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

Автоматизировать процесс FTP

Как лучше всего автоматизировать процесс ftp. Я имею в виду, можно ли написать сценарий, который при выполнении будет ftp к удаленной системе и извлекать файлы без вмешательства человека.

Пожалуйста, предложите.

Я лично использую lftp, который легко обрабатывается сценариями (см. руководство).

Конечно, вы также можете написать адаптированный FTP-клиент, используя perl / ruby ​​/ python / your-preferred-scripting-language.

Я думаю, вы можете использовать wget для этого:

WGET бесплатен, так что вы можете взять его и проверить файл справки

Что-то вроде:

wget -user=username -pass=password ftp://ftp.moose.com/download.zip

Очевидно, можно использовать с переменными в скрипте и т. Д.

Только что заметил, что это для Solaris, поэтому не уверен, что это сработает.

Для этого существуют пакеты Perl. Например модули CPAN Net :: Lite :: FTP и Сеть :: FTP.

Это позволит вашему сценарию принимать решения на основе информации с сервера. Например. если имя файла не является постоянным (может содержать дату или номер версии), то сценарий может обработать список каталогов, прежде чем решить, какой файл загрузить.

Я успешно использовал его для автоматизации загрузки / обновления больших баз данных молекулярных последовательностей.

мне нравиться завиток лучший:

curl - это инструмент командной строки для передачи файлов с синтаксисом URL, поддерживающий FTP, FTPS, HTTP, HTTPS, SCP, SFTP, TFTP, TELNET, DICT, LDAP, LDAPS и FILE. curl поддерживает SSL-сертификаты, HTTP POST, HTTP PUT, загрузку по FTP, загрузку на основе HTTP-форм, прокси, файлы cookie, аутентификацию пользователя + пароль (базовая, дайджест, NTLM, согласование, керберос ...), возобновление передачи файлов, туннелирование прокси и куча других полезных трюков.

Очень удобно для всех ваших потребностей в получении URL.

Солярис ftp команда может быть автоматизирована с помощью файла netrc (4). В macdef init это ключ. образец:

кошка ~ / .netrc
машина remote-host1.domain.com войти в my-ftp-account
пароль password4host1
macdef init
CD
/ pub / СКАЧАТЬ получить readme

по умолчанию логин анонимный пароль my-email@mail.domain.com

Ноты:

  1. Две пустые строки после определения макроса инициализации важны,
  2. Это также автоматизирует интерактивный сеанс ftp с удаленным хостом1.

Ваш сценарий может создать netrc файл перед вызовом ftp.

Вы уже получили много рекомендаций использовать что-то отличное от FTP. Это справедливо, потому что создание сценариев для FTP немного раздражает, но оно не обязательно переносимо и не учит вас чему-то новому.

На самом деле довольно просто создать сценарий, направив команды на ftp из STDIN. Подобные вещи подходят для многих инструментов.

cd /target
ftp -n host <<EOF
USER falken
PASS joshua
cd place
binary
get file
bye
EOF
echo 'hi! um... what'\''s this all about again? I am done.'

Часть входа в систему можно автоматизировать, добавив информацию в ~/.netrc файл. Фактически, если вы man netrc вы узнаете много нового об автоматизации ftp.

В Solaris вы также можете использовать ожидать инструмент автоматизации. Конечно, сначала вам следует установить его. Для FTP вы можете найти пример в Статья в Википедии об ожидании.

Я написал один раз для наших нужд,

#!/bin/sh

hostname = "IP-АДРЕС"

порт = "21"

username = "serverfault"

пароль = "serverfalut"

storage_path = "НАЗНАЧЕНИЕ"

current_date = "$ (дата +% Y% m% d)"

$ remotefile = "УДАЛЕННЫЙ ФАЙЛ"

ftp -in $ hostname $ port << EOF

процитировать пользователя $ username

цитата пароль $ пароль

двоичный

получить $ remotefile $ storage_path /

удалить $ output_dir / output $ current_date.tar.gz

уволиться

близко

EOF

выход 0

ncftp обычно включает ncftpget и ncftpput, которые подходят для включения в скрипты. Обычно они могут быть собраны из исходного кода или проверены csw или sunfreeware.

Обычно я просто использую ftp с файлом аутентификации .netrc, а затем помещаю в него все. Например

cat >> EOF | ftp
open ftpserver
mget *
bye
EOF