Как лучше всего автоматизировать процесс 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
Ваш сценарий может создать 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