14.4.1 Использование команд в текстовом диалоге

14.4.1 Использование команд в текстовом диалоге

Многие пользователи предпочитают графический интерфейс, доступный на настольных системах, но текстовый интерфейс позволяет лучше понять внутренние процессы протокола FTP.

Нижеприведенный текстовый диалог начинается с вывода справки. Существующие команды имеют синонимы, например ls и dir — для запроса сведений о каталоге, put и send — для копирования файла на удаленный хост, get и recv — для получения файла от удаленного хоста или bye и quit — для выхода из FTP.

Используя команды mget или mput и глобальные подстановочные символы можно одновременно копировать несколько файлов. Например, mget а* извлечет копии каждого файла с именем, начинающимся на букву а. Такой режим включается параметром glob, который разрешает или запрещает применение глобальных подстановочных символов.

В представленный ниже диалог включен вывод отладочной информации, чтобы дать некоторое представление о работе протокола:

? Строки, начинающиеся на -->, показывают сообщения, посланные локальным хостом по управляющему соединению.

? Строки, начинающиеся с числа, соответствуют сообщениям, посланным удаленным сервером для отчета о результате выполнения команды.

plum-feit > ftp

ftp> help

Commands may be abbreviated. Commands are:

!       cr         macdef  proxy     send

$       delete     mdelete sendport   status

account debug      mdir    put        struct

append  dir        mget    pwd        sunique

ascii   disconnect mkdir   quit       tenex

bell    form       mls     quote      trace

binary  get        mode    recv       type

bye     glob       mput    remotehelp user

case    hash       nmap    rename     verbose

cd      help       ntrans  reset      ?

cdup    led        open    rmdir

close   ls         prompt  runique

ftp> debug

Debugging on (debug = 1).

ftp> open tigger.jvnc.net

Connected to tigger.jvnc.net.

220 tigger.jvnc.net FTP server (Version wu-2.4(1) Fri Apr 15 13:54:36 EDT 1994)

ready.

Для обращения к личным файлам введены реальные идентификатор пользователя (userid) и пароль.

Name (tigger.jvnc.net:sfeit): feit

--> USER feit

331 Password required for feit.

Password:

--> PASS abcd1234

230 User feit logged in.

Команда status (статус) показывает текущие параметры сеанса FTP. Многие из них будут рассмотрены ниже. Пока отметим, что тип данных (Type) указан как ASCII. При пересылке текстовых файлов FTP часто предполагает это значение по умолчанию.

ftp> status

Connected to tigger.jvnc.net.

No proxy connection.

Mode: stream; Type: ascii; Form: non-print; Structure: file

Verbose: on; Bell: off; Prompting: on; Globbing: on

Store unique: off; Receive unique: off

Case: off; CR stripping: on

Ntrans: off

Nmap: off

Hash mark printing: off; Use of PORT cmds: on

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

ftp> dir

FTP необходим порт для пересылки данных. Клиент посылает команду PORT, которая идентифицирует его IP-адрес (4 байта) и новый порт (2 байта), чтобы использовать эти значения при пересылке данных. Байты преобразуются в десятичный формат и разделяются запятыми. IP-адрес 128.36.4.22 будет записан как 128,36,4,22, а порт 2613 — как 10,53.

--> PORT 128,36,4,22,10,53

200 PORT command successful.

Сервер откроет соединение по указанному адресу socket. Команда LIST — это формальное сообщение для запроса подробного списка файлов каталога:

--> LIST

Далее сервер открывает соединение с объявленным клиентом портом:

150 Opening ASCII mode data connection for /bin/ls.

total 531

-rw-r-r- 1 feit tigers 0 Oct 24 1994 .addressbook

-rw-r-r- 1 feit tigers 2808 Sep 23 1994 .article

-rw-r-r- 1 feit tigers 397 Mar 14 1993 .cshrc

. . .

-rw-r-r- 1 feit tigers 3113 Jul 31 13:29 subnets

-rw-r-r- 1 feit tigers 59901 Jun 5 17:48 typescript

226 Transfer complete.

2239 bytes received in 0.31 seconds (7 Kbytes/s)

Сразу после пересылки списка файлов соединение данных будет закрыто. Затем мы можем получить файл.

ftp> get subnets

Клиент указывает новый адрес socket для переноса файла. Отметим, что на сей раз используется клиентский порт 2614 (10,54).

--> PORT 128,36,4,22,10,54

200 PORT command successful.

--> RETR subnets

150 Opening ASCII mode data connection for subnets (3113 bytes).

226 Transfer complete.

По завершении пересылки файла соединение для данных закрывается.

local: subnets remote: subnets

3187 bytes received in 0.27 seconds (11 Kbytes/s)

ftp> quit

--> QUIT

221 Goodbye.

plum-feit>

Отметим, что сценарий для соединения данных был таким:

? Локальный клиент получил новый порт и использовал управляющее соединение, чтобы сообщить серверу FTP номер своего порта.

? FTP-сервер связался с новым портом данных клиента.

? Данные были переданы.

? Соединение было закрыто.

Можно применять альтернативный сценарий. Если клиент посылает команду PASV, сервер возвращает номер порта и переходит к прослушиванию установки соединения данных от клиента. Ранее преобладало использование команды PORT. Однако теперь клиент может послать команду PASV для пересылки файлов через простую систему защиты (firewall), которая не разрешает установку соединений из поступающих сообщений (этот вариант будет подробно рассмотрен чуть позже).

При работе с файлами большого размера иногда обнаруживается, что пересылается не тот файл. Хорошая реализация должна позволять отменить пересылку. Для текстового интерфейса это обычно делается через комбинацию клавиш CONTROL-C, а в графическом интерфейсе — специальной кнопкой Abort (остановить).

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

Исполнение команд

Из книги Управление исходными текстами. Часть 1. Краткое руководство по CVS автора Рыженков Илья

Исполнение команд Общий синтаксис операций с CVS выглядит так:> cvs [cvs-options] command [command-options-and-arguments] ПРИМЕЧАНИЕ. Угловой скобкой в начале строки «>» я буду отмечать текст, набираемый в командной строке. Текст без угловой скобки, следующий за командой, является предполагаемым


Генерирование SQL-команд с помощью типов построителя команд

Из книги Язык программирования С# 2005 и платформа .NET 2.0. [3-е издание] автора Троелсен Эндрю

Генерирование SQL-команд с помощью типов построителя команд Вы должны согласиться с тем, что для работы с адаптерами данных может потребоваться ввод довольно большого объема программного кода, а также создание всех четырех объектов команд и соответствующей строки


Использование «Контроллера» в диалоге

Из книги Применение Windows API автора Легалов А И

Использование «Контроллера» в диалоге Программа с диалогом в качестве главного окнаПеревод А. И. ЛегаловаАнглоязычный оригинал находится на сервере компании Reliable SoftwareОсновное окно программы не должно быть универсальным окном, изменяющим свой размер. Много небольших


Примеры команд MI

Из книги Основы AS/400 автора Солтис Фрэнк

Примеры команд MI Рисунок 4.9а Команда арифметического сложения (ADDN)На рисунках 4.9а, 4.9б и 4.9в показаны форматы трех команд ОРМ MI. Команда арифметического сложения ADDN имеет шестнадцатиричный[ 39 ] код операции 1043, а также три операнда. Это вычислительная команда, и функция


4.18. Подсчет вхождений каждого слова в текстовом файле

Из книги Linux: Полное руководство автора Колисниченко Денис Николаевич

4.18. Подсчет вхождений каждого слова в текстовом файле ПроблемаТребуется подсчитать количество вхождений в текстовом файле каждого слова.РешениеДля чтения из текстового файла непрерывных фрагментов текста используйте operator>>, определенный в <string>, а для сохранения


4.21. Замена в текстовом файле последовательностей пробелов на один пробел

Из книги Операционная система UNIX автора Робачевский Андрей М.

4.21. Замена в текстовом файле последовательностей пробелов на один пробел ПроблемаИмеется текстовый файл с последовательностями пробелов различной длины и требуется заменить каждое вхождение такой последовательности на единственный пробел.РешениеДля чтения


Количество строк в текстовом поле

Из книги Установка, настройка и восстановление Windows 7 на 100% автора Ватаманюк Александр Иванович

Количество строк в текстовом поле Если у текстового поля свойство Multiline имеет значение True, то свойство Lines возвращает массив строк в текстовом поле. Но у данного свойства есть два недостатка. Во-первых, свойство Lines не поддерживается библиотекой .NET Compact Framework, а во-вторых,


3.4.7. Группировка команд

Из книги автора

3.4.7. Группировка команд Кроме конвейеров, команды можно соединять в списки. Простейший вид списка — несколько команд, разделенных точкой с запятой:$ lpr myfile.txt ; lpqКоманды в таком списке выполняются последовательно: сначала будет выполнена команда постановки задания в


Переадресация команд: применение переадресации команд для непосредственного выполнения скриптов и каналов

Из книги автора

Переадресация команд: применение переадресации команд для непосредственного выполнения скриптов и каналов Переадресация (перенаправление) команд – одна из наиболее полезных возможностей протокола SSH. Она вытекает из его основополагающих принципов построения, когда


Глава 23 Использование команд для доступа к приложениям

Из книги автора

Глава 23 Использование команд для доступа к приложениям 23.1. Горячие клавиши23.2. Настройка быстрого вызова программ и папок23.3. Команды shellКак бы хорошо и быстро ни работала операционная система, какими бы продвинутыми механизмами, ускоряющими работу программ и системных