Скриптирование FTP с помощью DriveHQ CommandFTP

Скриптирование FTP/SFTP с помощью DriveHQ CommandFTP


1. Введение
2. Синтаксис и параметры DriveHQ CommandFTP
3. Создание файлов FTP-скриптов
3.1 Пример файла FTP-скрипта
3.2 FTP-скрипт с параметрами
4. Автоматизируйте передачу файлов с помощью планировщика задач Windows
5. Автоматическая синхронизация папок с помощью DriveHQ CommandFTP
6. Справочник команд FTP
6.1 Стандартные команды FTP
6.2 Расширенные команды FTP DriveHQ

1. Введение

DriveHQ CommandFTP — это мощный FTP- и SFTP-клиент с интерфейсом командной строки, разработанный для замены FTP-клиента Windows. Он поддерживает FTP-скрипты и совместим с любыми стандартными FTP/SFTP-серверами.

FTP/SFTP чрезвычайно популярен для передачи больших файлов/папок через Интернет. FTP-клиент с командной строкой широко используется для автоматической передачи файлов с помощью FTP-скриптов. Многие используют встроенный FTP-клиент командной строки в Windows. Однако у встроенного FTP-клиента есть несколько существенных недостатков:

  • 1. Он поддерживает только активный режим FTP, который часто блокируется маршрутизаторами, брандмауэрами или программным обеспечением безопасности.
  • 2. Он поддерживает только обычный FTP без шифрования данных.
  • 3. Автоматическое возобновление/повторная попытка не поддерживаются.

DriveHQ CommandFTP разработан для замены стандартного FTP-клиента Windows. Он обладает следующими преимуществами:

  • 1. Он поддерживает как активный, так и пассивный режимы FTP.
  • 2. Он поддерживает FTP через SSL (FTPS и FTPES) и SFTP.
  • 3. Поддерживается автоматическое возобновление/повторная попытка.
  • 4. Он поддерживает сжатие и шифрование данных.
  • 5. Он поддерживает загрузку/выгрузку папок.
  • 6. Он поддерживает зеркальное отображение/синхронизацию папок.
  • 7. Он поддерживает ведение журнала событий для аудита и устранения неполадок.
  • 8. После операции можно отправлять отчеты по электронной почте.
  • 9. Он поддерживает более мощные FTP-скрипты.

Во многих случаях DriveHQ CommandFTP может напрямую заменить FTP-клиент Windows. У них схожий синтаксис и параметры командной строки. Однако DriveHQ CommandFTP предлагает гораздо больше возможностей. Он может обрабатывать сложные задачи передачи файлов всего одной командой. Благодаря поддержке SFTP, вы можете написать FTP-скрипт, но запустить его с помощью SFTP-сервера.

2. Синтаксис и параметры DriveHQ CommandFTP

Синтаксис


cmdftp FTP_SERVER [-u:USERNAME] [-p:PASSWORD] [-i] [-A] [-k:"PRIVATE_KEY_FILE"] [-s:"FTP_SCRIPT_FILE"] [-d:"LOG_FILE"] [-m:"SOURCE_FTP_SERVER", "DESTINATION_FTP_SERVER"] [CMDOPTIONS]
cmdftp [-s:"FTP_SCRIPT_FILE"] [-d:"logfile"]

Параметры

Параметр Описание
FTP_SERVER Имя или IP-адрес FTP/SFTP-сервера, например, ftp.drivehq.com, ftp://ftp.drivehq.com или ftps://ftp.drivehq.com. Этот параметр обязателен, если в параметрах не указано -s:FTP_SCRIPT_FILE
-u:USERNAME Указывает имя пользователя учетной записи FTP/SFTP.
-p:PASSWORD Указывает пароль учетной записи FTP/SFTP.
-k:"PRIVATE_KEY_FILE" Необязательный параметр. Указывает путь к файлу закрытого ключа SFTP.
-s:"FTP_SCRIPT_FILE" Необязательный параметр. Указывает путь к файлу FTP-скрипта. Если этот параметр указан, то остальные параметры игнорируются, за исключением параметра "-d:LOG_FILE".

Параметры команды

/xo[:time] Исключить старые файлы
/xn[:time] Исключить более новые файлы
/xf:filenames Исключить файлы, файлы разделяются запятой
/xd:foldernames Исключить папки, папки разделяются запятой

Параметры ведения журнала

-d:"LogFileName" Указывает путь к файлу журнала. Если используется параметр "-d" без указания LogFileName, то журнал будет отображаться в окне консоли.

3. Создание файлов FTP-скриптов

FTP-скрипты очень популярны среди ИТ-администраторов и системных интеграторов. Они широко используются для автоматизированного резервного копирования данных и передачи файлов. FTP-скрипты позволяют создать текстовый файл, содержащий список команд и входных параметров FTP. Затем эти команды можно выполнить последовательно за один раз. Поскольку файл скрипта может содержать множество команд FTP, он может выполнять очень сложные задачи по передаче файлов.

Возможности FTP-скриптинга со стандартным FTP-клиентом Windows весьма ограничены: он поддерживает только обычный FTP, который небезопасен, и только FTP в режиме Active Model, который часто блокируется маршрутизаторами/брандмауэрами. DriveHQ CommandFTP поддерживает большинство функций FTP-клиента Windows, а также множество функций, недоступных в стандартном FTP-клиенте Windows. DriveHQ CommandFTP совместим со всеми стандартными FTP-серверами.

Чтобы написать скрипт для FTP, сначала выполните команды FTP в интерактивном режиме. Откройте командную строку и введите следующие команды, как показано на скриншоте ниже:

Эти команды обычно включают в себя: подключение к FTP-серверу, вход на сервер, вывод списка файлов/папок в каталоге, смену текущего каталога, загрузку/скачивание/удаление файлов и так далее. Если вы используете FTP лишь изредка, то описанный выше метод вполне подойдет. Однако, если вам необходимо многократно передавать/создавать резервные копии/удалять файлы, например, в рамках запланированной задачи резервного копирования или EDI (электронный обмен данными) с другой компанией, вы можете легко написать скриптовый файл, который можно использовать снова и снова. В сочетании с планировщиком задач, поддерживаемым операционной системой, вы можете автоматизировать бизнес-процесс.

Пример файла FTP-скрипта
Файл FTP-скрипта содержит те же команды/ввод, что и в интерактивном FTP-сессии. По сути, вам просто нужно создать текстовый файл в текстовом редакторе (например, в Блокноте) и ввести команды и ввод так же, как и в интерактивном режиме. Интерфейс CommandFTP от DriveHQ очень похож на интерфейс FTP-клиента для Windows. Следующие команды можно выполнить как в FTP-клиенте для Windows, так и в клиентах CommandFTP от DriveHQ. Чтобы использовать CommandFTP, введите cmdftp вместо ftp. Например::

C:\>ftp
ftp> open ftp.drivehq.com
Connected to ftp.drivehq.com.
220 Welcome to the most popular FTP hosting service! Save on hardware, software,
 hosting and admin. Share files/folders with read-write permission. Visit http:/
/www.drivehq.com/ftp/;
User (ftp.drivehq.com:(none)): dhqdemo
331 User name ok, need password.
Password: xxxxxxxxx
230 User dhqdemo logged on.
ftp> cd test
250 CWD command successful. "/test" is current directory.
ftp> delete orders.xml.bak
550 File not found.
ftp> rename orders.xml orders.xml.bak
350 File exists, ready for destination name.
250 File "/test/orders.xml" renamed successfully.
ftp> put c:\test\orders.xml
200 Port command successful.
150 Opening BINARY mode data connection for file transfer.
226 Transfer complete
ftp: 41 bytes sent in 0.06Seconds 0.65Kbytes/sec.
ftp> quit
221 Bye

C:\>


Как видите, эти команды будут:
- Войдите на FTP-сервер: ftp.drivehq.com;
- Введите имя пользователя и пароль;
- Перейдите в локальную директорию "c:\test";
- Перейдите в FTP-каталог "/test";
- Удалите файл "Orders.xml.bak" (если он существует) на FTP-сервере;
- Переименуйте файл "Orders.xml" (если он существует) в "Orders.xml.bak" на FTP-сервере;
- Загрузите локальный файл "Orders.xml" на FTP-сервер;
- Выход

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

open ftp.drivehq.com
USERNAME
xxxxxxxxx
cd test
delete orders.xml.bak
rename orders.xml orders.xml.bak
put c:\test\orders.xml
quit

Приведенный выше FTP-скрипт можно запускать ежедневно для автоматической передачи информации о новых заказах на FTP-сервер. Он загрузит на FTP-сервер последнюю версию файла "Orders.xml"; перед загрузкой файла он переименует (создаст резервную копию) предыдущего файла.
Для запуска FTP-скрипта достаточно выполнить команду FTP с опцией -s. В FTP-клиенте Windows можно использовать..:
	ftp -s:ftpscript.txt 

С помощью клиента DriveHQ CommandFTP вы можете использовать
	cmdftp -s:ftpscript.txt 
    

FTP-скрипты с параметрами
Приведённый выше FTP-скрипт является статическим. Его можно запускать многократно, но он не очень гибок. Например, если вам нужно передавать данные для нескольких клиентов, вы, вероятно, захотите использовать разные папки. Для повторного использования одного и того же FTP-скрипта необходимо добавить поддержку дополнительных параметров. Существует два решения:
(1) Используйте пакетный скрипт для динамического создания файла скрипта FTP. Пакетные скрипты Windows могут принимать параметры командной строки. Если вы используете FTP-клиент Windows, это единственное решение.
(2) DriveHQ CommandFTP поддерживает дополнительные параметры.
В первом способе вам потребуется создать пакетный файл, например, test.bat. Сохраните файл в папке C:\test. Запустить пакетный файл можно, введя команду..:

	c:\test\test.bat PARAM1 PARAM2 ...

Файл test.bat будет выглядеть следующим образом:

@echo off
echo open ftp.drivehq.com> ftpscript.txt
echo USERNAME>> ftpscript.txt
echo PASSWORD>> ftpscript.txt
echo cd %1>>  ftpscript.txt
echo delete %2.bak>>  ftpscript.txt
echo rename %2 %2.bak>> ftpscript.txt
echo put c:\%1\%2>> ftpscript.txt
echo quit>> ftpscript.txt


Таким образом, вы можете передавать аргументы из пакетного файла в скрипт FTP. Один и тот же пакетный скрипт можно использовать для разных компаний, например.:
    c:\test\test.bat c:\OrdersOfCompanyA ordersOfCompanyA.xml
    c:\test\test.bat c:\OrdersOfCompanyB ordersOfCompanyB.xml
С помощью DriveHQ CommandFTP вы можете запускать FTP-скрипты с дополнительными аргументами. Таким образом, вам не нужно создавать пакетный файл. Вы можете просто запустить FTP-скрипт с помощью следующей команды:
    
cmdftp -s:ftpscript.txt argument1 argument2 argument3 ...
    
Файл FTP-скрипта необходимо немного изменить следующим образом:

# %1 is like "test", %2 is like "orders.xml"
# This file is saved as c:\temp\ftpscript2.txt
# to run it, use:
# cmdftp -s:c:\temp\ftpscript2.txt -%1:test -%2:orders.xml

open ftp.drivehq.com
USERNAME
PASSWORD
cd /%1
delete /%1/%2.bak
rename /%1/%2 /%1/%2.bak
put c:\%1\%2
quit

В приведенном выше скрипте имя папки заменено на %1, а имя файла — на %2. Для запуска FTP-скрипта необходимо указать эти параметры в качестве аргументов командной строки.
    
cmdftp -s:c:\temp\ftpscript2.txt -%1:test -%2:orders.xml
    
При выполнении скрипта программой DriveHQ CommandFTP файл %1 будет заменен на "test", а %2 — на "orders.xml".

4. Автоматизируйте передачу файлов с помощью планировщика задач Windows

Независимо от того, используете ли вы пакетный файл или напрямую DriveHQ CommandFTP, вы можете запланировать передачу файлов в Планировщике задач Windows. Вы можете настроить выполнение задачи ежедневно, еженедельно или ежемесячно. В расширенных настройках вы даже можете установить запуск задачи каждые несколько часов или минут. Вы можете установить время начала задачи. Чтобы запустить Планировщик задач, введите «Планировщик задач» в поле поиска (см. скриншот ниже):

Launch Windows Task Scheduler

Нажмите «Планировщик задач», это запустит планировщик задач Windows.

Click create basic task in Windows Task Scheduler

Чтобы создать задачу, нажмите «Создать простую задачу».

Create basic scheduled task

Введите название и описание задачи, затем нажмите «Далее».

Select task trigger / schedule

Выберите расписание выполнения задачи. Вы можете выбрать ежедневное, еженедельное или ежемесячное выполнение. Если вы хотите запускать задачу ежечасно, вы можете сделать это позже в расширенных настройках. Нажмите «Далее», чтобы задать действие.

Scheduled Task - Action - select a program

На странице «Действия» выберите «Запустить программу», затем нажмите «Далее».

Scheduled Task - Action - Select DriveHQ CommandFTP

Выберите программу DriveHQ CommandFTP (cmdftp.exe). Добавьте параметры командной строки в текстовое поле «Добавить аргументы». Параметр «Запустить в» необязателен. Вы можете указать ту же папку, что и EXE-файл. Нажмите «Далее», чтобы завершить создание задачи.

Чтобы получить доступ к расширенным настройкам, нажмите «Библиотека расписаний задач», и вы увидите список запланированных задач. Дважды щелкните задачу «Загрузка заказов», чтобы отредактировать ее настройки.

Scheduled Task - Advanced Settings - Edit Task Properties

Обратите внимание, что по умолчанию задача будет выполняться только тогда, когда пользователь авторизован. Вы можете изменить этот параметр, чтобы задача выполнялась даже тогда, когда пользователь не авторизован.

5. Автоматическая синхронизация папок с помощью DriveHQ CommandFTP

DriveHQ CommandFTP поддерживает зеркальное отображение папок. Синхронизация локальной папки с папкой FTP очень проста. Просто используйте следующую команду:

	cmdftp FTP_SERVER -u:username -p:password -m:"LOCAL_FOLDER|FTP_FOLDER"

С помощью планировщика задач Windows вы можете запустить эту команду для периодической синхронизации двух папок.

6. Справочник команд FTP

После подключения к FTP-серверу вы можете отправлять FTP-команды на этот сервер. FTP-клиент для Windows поддерживает следующие команды. Обратите внимание, что эти команды не идентичны команде Команды FTP, определенные в протоколе FTP. Обычно каждая команда протокола FTP решает только одну простую задачу. В клиенте FTP под управлением Windows одна команда FTP может использовать несколько команд протокола FTP.

DriveHQ CommandFTP похож на FTP-клиент для Windows. Он поддерживает аналогичные команды и синтаксис. Кроме того, он также поддерживает несколько специфических для DriveHQ расширенных команд FTP, например, команды для копирования, перемещения, загрузки, скачивания или удаления папок.

6.1 Команды FTP-клиента Windows

FTP-клиент для Windows (ftp.exe) поддерживает следующие команды FTP:
Команды FTP Описание
! Эта команда переключает режимы работы между локальной операционной системой и FTP-сервером. При подключении к FTP-серверу по умолчанию используется именно он. Если вы хотите выполнить команду локально, обычно можно использовать.. !CMD_NAME, e.g. !dir, !mkdir, и т. д.
? Отображает справочную информацию.
append Добавить в файл.
ascii Установить режим передачи ASCII.
bell Включите функцию "Звуковой сигнал по завершении команды".
binary Установить двоичный режим передачи.
bye Отключите FTP-сессию и выйдите.
cd Сменить каталог.
close Завершить FTP-сессию.
delete Удаляет файл.
debug Включение или выключение режима отладки.
dir Выводит список файлов и подпапок в каталоге.
disconnect Отключите FTP-сессию.
get Получить файл с удалённого FTP-сервера.
glob Включить или выключить функцию сопоставления шаблонов. При выключении символы-заменители в именах файлов (в помещать и получать Приказы воспринимаются буквально.
hash Переключить вывод символа «#» для каждого переданного буфера.
help Отобразить справочную информацию; обычно используется команда help COMMAND_NAME.
lcd Если ввести команду отдельно, отобразится текущий локальный рабочий каталог; в противном случае будет выполнена смена локального рабочего каталога.
literal Отправьте произвольную команду на подключенный FTP-сервер с ожидаемым ответом в одну строку.
ls Список файлов в FTP-папке.
mdelete Удалите несколько файлов на FTP-сервере.
mdir Выводит список файлов/подпапок нескольких FTP-каталогов.
mget Загрузите несколько файлов с FTP-сервера в свою локальную рабочую папку.
mkdir Создайте новую директорию.
mls Отобразить содержимое нескольких FTP-каталогов.
mput Загрузите несколько локальных файлов на FTP-сервер.
open Подключитесь к FTP-серверу.
prompt Включает или отключает интерактивные подсказки для нескольких команд.
put Загрузите один файл на FTP-сервер.
pwd Вывести информацию о рабочем каталоге на FTP-сервере.
quit Отключитесь от FTP-сервера и выйдите.
quote Аналогично буквальной команде (Отправить произвольную команду FTP).
recv Загрузить/получить файл с FTP-сервера.
remotehelp Получите помощь с удалённого сервера.
rename Переименовать файл на FTP-сервере.
rmdir Удалите каталог на FTP-сервере.
send Отправьте один файл.
status Отображает статус текущих опций.
trace Включить/выключить трассировку пакетов.
Type Установить тип передачи файла.
user Отправить информацию о новом пользователе (имя пользователя).
verbose Включить или выключить подробный режим отображения.

6.2 Расширенные команды FTP DriveHQ

DriveHQ CommandFTP поддерживает несколько дополнительных расширенных команд FTP:

Команды FTP Описание
download Скачать папку или файл.
Синтаксис: Download [FTP-FILEorFOLDER-PATH] [LOCAL-FILEorFOLDER-PATH]
upload Загрузите папку или файл.
Синтаксис: Upload [LOCAL-FILEorFOLDER-PATH] [FTP-FILEorFOLDER-PATH]
mirror Создайте зеркальную копию локальной папки и папки на FTP-сервере.
Синтаксис: MIRROR [LOCAL-FOLDER-PATH] [FTP-FOLDER-PATH]
deleteoldfiles В указанной папке удалить файлы старше x дней.
Синтаксис: deleteoldfiles [FTP-PATH] /xo:[time]