Команда FTP
Команда FTP реализует обмен файлами с FTP сервером в командной строке Windows. Утилита ftp.exe входит в стандартный дистрибутив всех версий операционных систем семейства Windows и позволяет выполнять обмен с сервером как в командном, так и в интерактивном режиме.
Формат командной строки:
FTP [-v] [-d] [-i] [-n] [-g] [-s:имя_файла] [-a] [-A] [-x:sendbuffer] [-r:recvbuffer] [-b:asyncbuffers] [-w:windowsize] [узел]
-v — Отключение вывода на экран ответов с удаленного сервера.
-n — Отключение автоматического входа при начальном подключении.
-I — Отключение интерактивных запросов при передаче нескольких файлов.
-d — Включение отладочного режима.
-g — Отключение глобализации имен файлов (см. команду GLOB).
-s:имя_файла — Задание текстового файла, содержащего команды FTP, которые будут выполняться автоматически при запуске FTP.
-a — Использование локального интерфейса для привязки соединения.
-A — Анонимное подключение к серверу.
-x:send sockbuf — Переопределение стандартного размера буфера SO_SNDBUF (8192).
-r:recv sockbuf — Переопределение стандартного размера буфера SO_RCVBUF (8192).
-b:async count — Переопределение стандартного размера счетчика async (3)
-w:windowsize — Переопределение стандартного размера буфера передачи (65535).
узел — Задание имени или адреса IP удаленного узла, к которому необходимо выполнить подключение.
— команды mget и mput принимают параметры y/n/q как YES/NO/QUIT.
— для прекращения выполнения команд нажмите комбинацию клавиш CTRL+C.
При запуске без параметров, FTP переходит в интерактивный режим, ожидая ввода команд пользователем. На экране отображается приглашение — ftp > .
Для получения списка доступных команд можно ввести знак вопроса или команду help
| ! ? append ascii bell binary bye cd close | literal debug dir disconnect get glob hash help lcd | ls mdelete mdir mget mkdir mls mput open prompt | send put pwd quit quote recv remotehelp rename rmdir | status trace type user verbose Подсказку по конкретной команде можно получить введя знак вопроса или help и имя команды: ? connect Список команд FTP клиента Windows: ! — Временный переход из среды FTP в командную строку Windows (CMD.EXE) . Для возврата в FTP используется команда EXIT Как видно из списка перечисленных команд, стандартный клиент FTP в операционных системах Windows поддерживает далеко не полный перечень стандартных ftp-команд и, что самое неприятное, он не поддерживает команду переключения в пассивный режим ( passv ) обмена с сервером FTP, что делает его непригодным для обмена данными с серверами FTP, подключение к которым выполняется с использованием технологии трансляции сетевых адресов NAT . Другими словами, для обмена файлами с внешними, по отношению к подсети клиента, серверами, стандартный FTP-клиент не подходит. Это касается всех версий Windows, включая и Windows 10. Именно этот факт предопределяет область использования утилиты ftp.exe — только в локальных сетях, где возможно прямое TCP-соединение между клиентом и сервером. Пример сессии с использованием клиента FTP Windows: open 192.168.1.1 — открыть соединение с сервером 192.168.1.1 При использовании FTP клиента Windows в командных файлах, часто применяется запуск программы в режиме управления командами FTP, записанными в текстовый файл. Как переключить ftp.exe в пассивный режим? или загрузка с wputИспользовал я как-то стандартный ftp.exe из Windows, все было хорошо, пока не он не перестал работать. 200 PORT command successful. Consider using PASV. Оказалось понадобился пассивный режим. Так думаю, нет вопросов, прошелся по справке не видно ничего такого, нашел обсуждение quote pasv но эта команда переводит сервер в пассивный режим, но не клиент ftp.exe Альтернатива нашлась быстро — это wput, так как в делах закачки я доверяю wget, то wput был принят в мою команду без колебаний. Скачать ftp-клиент с возможностью докачки и пассивным режимом работы можно тут или с официального сайта. Синтаксис работы простой, хотя над тем чтобы понять как закачать файл, если он находится не в каталоге с wput и не создавать подкаталоги на удаленном сервере мне понадобилось пол часа, вот не мог я понять логики, но главное результат.. Пример работы с wput Слова статьи: как закачать файл на сервер ftp, загрузить файл из командной строки, пассивный режим ftp пример работы, how to configure ftp.exe to use passive mode (PASV), пример использования wput.exe Внимание! Добавлено 13.10.2011 Что-то с временем обнаружился какой-то баг — при копировании архива с файлами wput’ом на фтп сервер, дата и время файла обновлялось, а текстовый файл не менялся, а иногда менялся, я сильно не заморачивался с выяснением что да как, так как до этого столкнулся с багом 7zip который иногда не создавал новый архив, если старый архив лежал на том месте, а иногда создавал, в общем я решил кардинально — заменил wput на curl, тем более curl я использовал в другом новом проекте и опыт работы с ним уже был. Скачать облегченный curl — ссылка curl.exe -T %data_dir%\%file_name% -u %ftp_user%:%ftp_pass% %ftp_server% %data_dir% — каталог с данными для отправки %file_name% — имя отправляемого файла на фтп %ftp_user% — имя пользователя фтп %ftp_pass% — пароль на фтп %ftp_server% — адрес фтп сервера Вот такой простой синтаксис для загрузки и все стало работать как часы. ftp клиент пассивный режимВ Ubuntu ftp -p для пассивного режима работает нормально. Как мне сделать то же самое в Windows? Я пробовал с quote pasv , но я получаю следующую ошибку: Мой брандмауэр отключен. Windows фактически не поддерживает пассивный режим. Вы можете отправить команду на сервер тремя разными способами, но это не позволит включить пассивный режим на стороне клиента Windows. Эти аргументы предназначены для отправки различных команд, а pasv – это не то, о чем думала Microsoft, когда они ее написали. Вам нужно будет найти стороннее программное обеспечение, такое как WinSCP, которое поддерживает использование командной строки и использует это вместо родного Windows. Клиент командной строки Windows FTP ( ftp.exe ) не поддерживает пассивный режим в любой версии Windows. Это делает его сегодня бесполезным из-за вездесущих брандмауэров и NAT. Использование quote pasv не поможет. Он переключает только сервер в пассивный режим, но не клиент. Вместо этого используйте любой другой клиент командной строки Windows FTP. Большинство других поддерживают пассивный режим. Например WinSCP по умолчанию используется пассивный режим и существует руководство для преобразования Windows FTP script для WinSCP script. Хотя это не отвечает на вопрос непосредственно о командной строке, но из ОС Windows, используйте проводник Windows ftp://username@server по умолчанию будет использоваться пассивный режим Для командной строки активный режим по умолчанию Команда quote PASV не является командой программы ftp.exe , это команда FTP-сервера, запрашивающая порт высокого порядка для передачи данных. Пассивная передача – это та, в которой данные FTP по этим портам высокого порядка, в то время как управление поддерживается в нижних портах. Программа windows ftp.exe может использоваться для отправки команд FTP-сервера для пассивной передачи данных между двумя FTP-серверами. Стандартная установка Windows не будет и, вероятно, не должна иметь службу FTP-сервера, работающую как конечную точку для пассивных передач. Поэтому, если требуется пассивная передача со стандартным окном, требуется другое решение, кроме ftp.exe , как FTPing для localhost, поскольку одно из соединений не будет работать в большинстве оконных сред. Вы можете осуществлять пассивную передачу FTP между двумя разными хостами (но не с двумя соединениями на одном хосте) следующим образом: Откройте два запроса, используйте один для ftp.exe для подключения к исходному FTP-серверу, а один к ftp.exe подключитесь к вашему FTP-серверу назначения. Теперь установите пассивное соединение между серверами, используя необработанные команды PASV и PORT. Команда quote PASV ответит IP/портом в многоточии. Используйте эти данные для команды quote PORT . Ваша пассивная ссылка теперь установлена, если брандмауэры не заблокировали один или несколько из четырех портов (2 для управления FTP, 2 для данных FTP) Затем начните прием данных с помощью команды quote STOR на принимающий FTP-сервер, затем отправьте управляющую команду quote RETR на исходный FTP-сервер. Cavet: я подключаюсь к некоторым старым FTP-серверам YMMV При работе по протоколу FTP между клиентом и сервером устанавливается два соединения – управляющее (по нему идут команды) и соединение передачи данных (по нему передаются файлы). В активном режиме, когда клиент говорит «Привет!» он так же сообщает серверу номер порта (из динамического диапазона 1024-65535) для того, чтобы сервер мог подключиться к клиенту для установки соединения для передачи данных. FTP -сервер подключается к заданному номеру порта клиента используя со своей стороны номер TCP -порта 20 для передачи данных. В пассивном режиме, после того как клиент сказал «Привет!», сервер сообщает клиенту номер TCP -порта (из динамического диапазона 1024-65535), к которому можно подключиться для установки соединения передачи данных. Главное отличие между активным режимом FTP и пассивным режимом FTP – это сторона, которая открывает соединение для передачи данных. В активном режиме, клиент должен принять соединение от FTP -сервера. В пассивном режиме, клиент всегда инициирует соединение. Инструменты пользователяИнструменты сайтаСодержаниеВведениеКлиент посылает запросы серверу и принимает файлы. В качестве клиентов могут использоваться – internet explorer, Windows Commander, NetVampir, gftp и т.д. Сервер обрабатывает запросы клиента на получение файла. В качестве серверов могут использоваться – vsftpd, IIS, wuftpd, proftpd и т.д. Режимы работы FTP: активный и пассивныйВ Активном режиме, когда клиент говорит «Привет!» он так же сообщает серверу номер порта (из динамического диапазона 1024-65535) для того, чтобы сервер мог подключиться к клиенту для установки соединения для передачи данных. FTP -сервер подключается к заданному номеру порта клиента используя со своей стороны номер TCP-порта 20 для передачи данных. В Пассивном режиме, после того как клиент сказал «Привет!», сервер сообщает клиенту номер TCP-порта (из динамического диапазона 1024-65535), к которому можно подключится для установки соединения передачи данных. Главное отличие между Активным режимом FTP и Пассивным режимом FTP – это сторона, которая открывает соединение для передачи данных. В Активном режиме, клиент должен принять соединение от FTP -сервера. В Пассивном режиме, клиент всегда инициирует соединение. Первоначальная настройка брандмауераСоздаем минимальный набор правил в нашем фаерволе. Этот пример создан лишь для того, чтобы показать принцип работы iptables. Для более углубленного понимания работы iptables рекомендую прочитать статью Оскара Андерсона в переводе Андрея Кисилева – Iptables Tutorial 1.1.19, которая считается классикой. eth0 – смотрит в локальную сеть, eth1 – смотрит в мир. Данным скриптом (firewall.sh) удобно пользоваться на стадии отладки правил. После того, как у вас все настроено, лучше воспользоваться штатными средствами управления iptables. Для этого воспользуемся скриптом для сохранения текущих правил в файл. В разных дистрибутивах набор правил может сохраняться по отличному от /etc/sysconfig/iptables пути. Данный путь является стандартным для Red Hat дистрибутивов и его клонов, например CentOS. Но при таких настройках фаервола ftp через nat еще не будет работать. Для облегчения нашей задачи воспользуемся специальным модулем, который и был разработан как раз для этих целей. Загрузим модуль ip_nat_ftp, который и будет выполнять всю черную работу вместо нас. Обратите внимание, что в цепочке eth0-eth1, через которую проходят все транзитные пакеты, мы открыли только порт 21 и разрешили прохождение пакетов с состоянием RELATED и ESTABLISHED. Для работы ftp как в активном так и в пассивном режимах больше ничего не требуется, все остальные заботы берут на себя модули ip_nat_ftp и ip_conntrack_ftp. ТестированиеПосле того, как мы загрузили модуль и правил можно приступить непосредственно к тестированию. Для этого можно воспользоваться любимым ftp клиентом и попробовать соединиться с любым ftp сервером. В качестве клиента я использовал ftp клиент встроенный в far, который позволяет использовать как активный, так и пассивный режимы. Если под рукой нет никакого ftp клиента всегда можно воспользоваться встроенным в windows клиентом как показано ниже. Для наглядности можно посмотреть с помощью tcpdump что происходит при попытке подключиться к удаленному ftp серверу. Ну вот собственно и вся настройка. Для того, чтобы каждый раз при загрузке системы модуль ip_nat_ftp загружался автоматически необходимо внести небольшие изменения в файл /etc/sysconfig/iptables-config. После этого при перезагрузке iptables или системы в целом данный модуль будет загружаться автоматически, а также подгружать все необходимые модули. |


