#!/bin/sh
# Устанавливаем дату и время. Требуется, чтобы делать
# архив отправленных файлов, на будущее
day="'date +%Y-%m-%d'"
# Данные для подключения по FTP
# Имя пользователя
FTPUSER='user'
# IP-адрес или доменное имя хоста
FTPHOST='1.2.3.4'
# Пароль FTP
PASS='password'
# Удалённый каталог, в который будем пересылать файл
REMOTEDIR="/Catalog1/Catalog2"
# Локальный каталог откуда будем копировать файлы
LOCALDIR="/samba/public/UPLOAD"
# Собственно, поехали
# Входим в локальный каталог, откуда будем копировать файлы
cd $LOCALDIR
# Создаём каталог, куда будем класть копии отправленных файлов
# Это на ваше усмотрение, надо это или нет
mkdir /samba/public/ARCHIVE/UPLOAD/$day
# Копируем в созданную нами директорию, текущего дня.
# Здесь правда есть подводные камни. Будьте внимательны, чтобы
# Данная процедура не пришлась на 23-59
cp * /samba/public/ARCHIVE/UPLOAD/$day
# Здесь начинается подключение к FTP-серверу
# Должно быть понятно, согласно описанию ниже
ftp -n $FTPHOST <<EOF
quote USER $FTPUSER
quote PASS $FTPPASS
binary
cd $REMOTEDIR
dir
mput *
EOF
cd /samba/public/UPLOAD
rm *
exit 0
* - это означает выбрать в каталоге абсолютно всё, иначе надо писать маски файлов.
Что делает этот скрипт? Пробежавшись по тексу, могу сказать, что должно быть понятно и так. Посмотрите определённые переменные? Ведь всё до безобразия понятно и просто. Смысл данного скрипта, чтобы его запустить, он работал и самое главное - чтобы после того, как вы поменяете место работы, ваш преемник смог в нём разобраться! :)
Самый важные момент в этом скрипте это то, что мы подключаемся к FTP-серверу, и после того как подключились, мы работаем уже не с командами SHELL, а с командами FTP.
Краткий перечень команд FTP:
- open имя_сервера - открыть соединение. Открывает соединение с сервером. Это имя можно указать сразу при вводе команды, загружающей клиента: ftp ftp.example.ru
- cd имя_директории - сменить каталог. Осуществляет переход в другой рабочий каталог на FTP-сервере.
- dir [имя_файла] можно сделать просто dir - выдать список файлов. Выдает список файлов в текущей директории. Не забывайте, что можно использовать шаблоны групповых операций.
- get имя_файла [имя_локального_файла] - переписать файл. Переписывает файл с удаленного компьютера на локальный. Если указано имя локального файла, то записывает его под этим именем, иначе - в каталог по умолчанию.
- mget [имя_файла] - переписать группу файлов. То же самое, что и get, но разрешается использовать шаблоны. Перед копированием каждого файла будет запрашиваться подтверждение. Для отмены подтверждений введите prompt.
- prompt - отменяет подтверждение в командах mget и mput.
- put имя_файла [имя_удаленного_файла] - записать файл на сервер. Переписывает файл с локального компьютера на удаленный под именем имя_удаленного_файла. Если оно не указано, то файл записывается в текущий каталог с именем локального файла. Команда запрещена для анонимных пользователей.
- mput [имя_файла] - записать группу файлов. То же самое, что и put, но разрешается использовать шаблоны. Перед записью каждого файла будет запрашиваться подтверждение. Для отмены подтверждений введите prompt.
- ascii - устанавливает ascii-способ передачи файлов. Используется для пересылки файлов-текстов на английском языке. Однако для надежности лучше использовать binary.
- binary - устанавливает двоичный способ пересылки файлов. При этом файл при передаче не перекодируется и записывается в неизмененном виде. Это наиболее надежный способ передачи файлов.
- close - закрывает соединение с данным сервером и производит возврат в командный режим. Эта команда автоматически выполняется при выходе из FTP-клиента.
- quit - выход из FTP-клиента.
- user - регистрирует на текущем сервере с новым именем. Используйте эту команду, если Вы первый раз по ошибке неправильно ввели имя анонимного пользователя и не хотите снова перенабирать команду open.
- lcd [имя_директории] - осуществляет переход на локальном компьютере в указанный каталог.
- pwd - выводит на экран текущий каталог на удаленном компьютере.
- system - выводит на экран тип операционной системы на удаленном компьютере.
- help [FTP-команда] - помощь. Выдает краткую информацию о командах FTP-клиента или о конкретной указанной команде.
Второй вариант скрипта для работы с FTP
#!/bin/sh
# Данные для подключения по FTP
FTPUSER='login'
FTPHOST='1.2.3.4'
FTPPASS='password'
ftp -n -v $FTPHOST <<INPUT_END > logfile.txt (для отладки)
user $FTPUSER $FTPPASS
epsv
binary
dir
prompt
<команды FTP>
INPUT_END
echo "*** ПРОГРАММА ЗАВЕРШЕНА"
Пробуйте, автоматизируйте, разбирайтесь. Если есть вопросы, то в форуме охотно поделимся своими знаниями.
Ссылки:
К содержанию