[SHELL]Работа с FTP

#!/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 "*** ПРОГРАММА ЗАВЕРШЕНА"

Пробуйте, автоматизируйте, разбирайтесь. Если есть вопросы, то в форуме охотно поделимся своими знаниями.




Ссылки:

К содержанию

© Copyright 2004-2017 - CMS Made Simple
Сайт работает на CMS Made Simple version 1.4.1

© Все печеньки Break-people.ru принадлежат авторам проекта.

Яндекс цитирования Рейтинг@Mail.ru Яндекс.Метрика