Статья Памятка по командам FTP

Тема в разделе "FAQ по Пакетным файлам CMD/BAT", создана пользователем Dragokas, 24 дек 2013.

  1. Dragokas
    Оффлайн

    Dragokas Very kind Developer Команда форума Супер-Модератор Разработчик Клуб переводчиков

    Сообщения:
    4.478
    Симпатии:
    4.307
    Автор обзора: Денис "Reagent" Ходус. Дополнено © мной [​IMG]

    Все мы знаем сочетание буковок FTP, которое расшифровывается как File Transfer Protocol.
    Старая, но до сих используемая технология передачи файлов между двумя компьютерами с использованием TCP/IP сети.

    Большинство из нас пользуется для работы с этим протоколом какими-либо утилитами или модулями файловых менеджеров. Но давайте представим себе ситуацию, когда нужно получить доступ к FTP-серверу через командную строку. Никаких панелей со списком файлов и кнопочками "Копировать" и "Удалить" там у Вас не будет. (Кстати, я часто именно через командную строку лажу - мне так просто даже быстрее - если приходится что-то сделать или проверить FTP.)

    Итак, команда для работы с FTP как в Windows, так и в Unix (включая Linux Debian, CentOS, ubuntu, rhel, FreeBSD и т.д.) одинаковая - так и называется - "ftp".

    Просто подсоединиться к определенному серверу - синтаксис тоже отличаться не будет:
    Код (Text):
    ftp 192.168.0.1
    А вот хитрости типа автологина и автоматического принятия или отсылки файлов - у разных ОС немного свои и мы здесь их разбирать не будем. Зато разберем - что же через командрую строку все-же сделать можно в самой сессии - и сами команды, конечно.

    Итак, начнем. В этой памятке приведены самые часто используемые команды, которые позволят Вам свободно общаться с любым сервером с любым набором опций.

    Команды

    Открываем консоль. Запускаем нашу утилиту, введя буквы ftp
    Видим на экране приглашение:
    Код (Text):
    ftp>
    HELP
    Выдает список поддерживаемых команд

    ? имя команды
    Получение короткого описания указанной команды.

    OPEN
    Присоединиться к указанному серверу (пишем его имя либо IP-адрес).
    Также можно указать порт через пробел. По-умолчанию используется стандартный - 21.
    Код (Text):
    ftp> open ftp.microsoft.com
    При этом сервер Вас спросит логин и пароль.

    CLOSE или DISCONNECT
    Закрыть соединение с текущим FTP сервером.
    Код (Text):
    ftp> close
    BYE или QUIT
    Закрыть соединение и выйти из утилиты FTP.
    Код (Text):
    ftp> bye
    USER
    Залогиниться на данном сервере под указанным пользователем (Вы должны быть уже подключены).
    Код (Text):
    ftp> user myusername
    где вместо "myusername" подставьте имя пользователя, под которым логинитесь. FTP-сервер Вас спросит пароль для этого пользователя перед тем, как пустить.

    LS или DIR
    Показать список файлов и директорий в текущей папке на сервере.
    Код (Text):
    ftp> ls
    MLS или MDIR
    Выгрузить список файлов из нескольких директорий в файл на Ваш компьютер.
    Код (Text):
    ftp> mls dir1 dir2 dir3 mylocalfile.txt
    CD
    Перейти в указанную папку на сервере.
    Код (Text):
    ftp> cd ../another/folder
    Частный случай этой команды: CDUP - перейти в родительскую директорию - то же самое, что и "CD ..":
    Код (Text):
    ftp> cdup
    LCD
    Перейти в указанную папку на Вашем компьютере.
    Код (Text):
    ftp> lcd d:\temp
    PWD
    Показать текущий путь (текущую папку) на FTP сервере.
    Код (Text):
    ftp> pwd
    GET или RECV
    Загрузить с FTP сервера в текущую папку Вашего компьютера указанный файл.
    Код (Text):
    ftp> get myftpfile.txt
    MGET
    Загрузить несколько файлов в текущую папку Вашего компьютера с сервера FTP.
    Код (Text):
    ftp> mget file1.txt file2.txt
    mget file1.txt? y
    mget file2.txt? y
    NEWER
    Загрузить с сервера FTP на Ваш компьютер указанный файл только если Ваш файл старее (т.е. удаленный файл свежее).
    Код (Text):
    ftp> newer myfile1 myfile1
    Здесь первый аргумент - имя файла на сервере, а второй аргумент - имя файла на Вашем компьютере.

    PUT или SEND
    Загрузить на FTP сервер указанный файл с Вашего компьютера.
    Код (Text):
    ftp> put mylocalfile.txt
    MPUT
    Загрузить на сервер несколько файлов с Вашего компьютера.
    Код (Text):
    ftp> mput myfile1.txt myfile2.txt
    mput myfile1.txt? y
    mput myfile2.txt? y
    DELETE
    Удалить указанный файл на сервере.
    Код (Text):
    ftp> delete remotefile.txt
    MDELETE
    Удалить несколько файлов на сервере.
    Код (Text):
    ftp> mdelete file1 file2
    MKDIR
    Создать директорию на сервере.
    Код (Text):
    ftp> mkdir mynewdir
    RMDIR
    Удалить директорию на сервере
    Код (Text):
    ftp> rmdir mydir
    PROMPT
    Избавляет от необходимости подтверждать получение файлов по маске нажатием клавиши "Y".

    HASH
    Отображает индикацию загрузки файлов с помощью меток хеширования (#).
    Одна такая метка, по-умолчанию = 2048 байт.
    Нужно для того, чтобы видеть - не подвисло ли получение/отправка больших файлов.

    BINARY
    Установка режима передачи данных в двоичном формате (подходит для любых типов файлов).

    SITE CHMOD
    Изменение прав на файл.
    Если сервер поддерживает команду SITE которая должна быть в списке выдаваемым командой HELP, и если сервер линуксовый:
    Код (Text):
    SITE CHMOD 777 file1.txt
    QUOTE PASV
    Переход в пассивный режим передачи данных.

    Пример сессии FTP

    Вот пример короткой FTP сессии, в которой мы подключаемся к серверу, создаем папку "newfiles" и заливаем в эту папку файл "binfile.bin".
    Код (Text):

    ftp
    ftp> open 31.170.155.55 21
    ftp> Anonymouse
    ftp>
    ftp> mkdir newfiles
    ftp> cd newfiles
    ftp> put "c:\binfile.bin"
    ftp> bye
    Для автоматизации рутинной работы можно создать текстовой файл со списком команд, например FTPCommand.txt а затем выполнить код:
    Код (Text):
    ftp.exe -s:FTPCommand.txt
    Исключения для файрвола

    Для успешного подключения к серверу утилита FTP.exe не должна блокироваться Вашим брандмауером.
    Для внесения в список исключений встроенного в ОС Windows можно выполнить код:
    Код (Text):
    netsh firewall add allowedprogram "%windir%\system32\ftp.exe" ENABLE
    Данный код подходит, как для Windows XP, так и Windows 7*.
    * Начиная с Windows Vista, алиас firewall считается устаревшив, хотя все еще поддерживается.
    Новый формат команды выглядит так:
    Код (DOS):
    :: для входящих соединений
    netsh advfirewall firewall add rule name="FTP_in" dir=in action=allow program="%windir%\system32\ftp.exe" enable=yes
    :: для исходящих соединений
    netsh advfirewall firewall add rule name="FTP_out" dir=out action=allow program="%windir%\system32\ftp.exe" enable=yes
    (+нужен запуск с повышенными правами)

    Альтернативные утилиты

    ** Некоторые сервера (к примеру, ucoz, а сейчас это и бывший narod.ru (сервис yandex-a) принципиально не поддерживают утилиту FTP.
    При попытке подключения, получим сообщения вида "I won't open a connection to ...".
    К счастью, есть альтернатива под названием WinSCP, которая имеет графический интерфейс и одновременно консольные команды, аналогичные утилите FTP.
    http://winscp.net/eng/docs/scripting
    http://winscp.net/eng/docs/commandline

    Сокращенная запись сценария
    Комментарий от Гимаев Наиль:

    Для интерактивного режима требуется наличие человека который будет вводить команды.
    В автоматическом режиме требуется наличие файла с командами. Например файл скачивания CureIt:
    Код (Text):
    open ftp.drweb.com
    binary
    get /pub/drweb/cureit/cureit.exe
    Файл очень маленький поэтому его можно преобразовать в такую команду:
    Код (Text):
    (echo binary& echo get /pub/drweb/cureit/setup.exe)| ftp -A ftp.drweb.com
    Здесь запускается интерактивный режим, а команды echo имитируют ввод команд человеком.

    Даже такой маленький вариант читать не очень удобно, а если команд будет чуть побольше, то очень не удобно.
    Поэтому лучше записать так:
    Код (Text):
    (
    echo binary
    echo get /pub/drweb/cureit/setup.exe
    )^
    |ftp -A ftp.drweb.com
    Также см.:
    Отправка файла на FTP через контекстное меню ++ копирование ссылки в буфер обмена
     
    Последнее редактирование: 29 май 2015
    akok, Kиpилл, Phoenix и 3 другим нравится это.
  2. Гимаев Наиль
    Оффлайн

    Гимаев Наиль Пользователь

    Сообщения:
    59
    Симпатии:
    98
    На всякий случай уточню, что в последнем примере знак крышки не обязателен и был добавлен лишь как пример того, что каждую команду можно записать на отдельной строке. Поэтому лучше вместо
    Код (DOS):
    )^
    |ftp -A ftp.drweb.com
    писать
    Код (DOS):
    )|ftp -A ftp.drweb.com
     
    Dragokas и Kиpилл нравится это.
  3. Dragokas
    Оффлайн

    Dragokas Very kind Developer Команда форума Супер-Модератор Разработчик Клуб переводчиков

    Сообщения:
    4.478
    Симпатии:
    4.307
    Как запретить просмотр содержимого папки для anonymouse ?
     
  4. Гимаев Наиль
    Оффлайн

    Гимаев Наиль Пользователь

    Сообщения:
    59
    Симпатии:
    98
    Сначала нужно определиться для какого сервера поставлена задача. Нужно знать хотя бы какая операционная система.
     
  5. Dragokas
    Оффлайн

    Dragokas Very kind Developer Команда форума Супер-Модератор Разработчик Клуб переводчиков

    Сообщения:
    4.478
    Симпатии:
    4.307
    Логично. Вот что выдает curl

    Код (Text):
    curl Dragokas.16mb.com/Dr.Web/ --head

    HTTP/1.1 200 OK
    Server: nginx
    Date: Sun, 06 Jul 2014 15:48:56 GMT
    Content-Type: text/html;charset=ISO-8859-1
    Connection: keep-alive
    Vary: Accept-Encoding
     
    akok нравится это.

Поделиться этой страницей