Для успешного скачивания файла нам потребуется две открытые консоли и калькулятор. Вместо telnet можно использовать nc/netcat. Подключаться будем в пассивном режиме.
Авторизируемся:
$ telnet mirror.yandex.ru 21 Trying 213.180.204.183... Connected to mirror.yandex.ru. Escape character is '^]'. 220-Welcome to Yandex Mirror FTP service. Your served by: node01d.mirror.yandex.net 220 USER anonymous 331 Please specify the password. PASS a@b.ru 230 Login successful.Открываем на сервере порт для "пассивного" подключения:
PASV 227 Entering Passive Mode (213,180,204,183,221,153).Здесь мы видим параметры для ВТОРОГО подключения. Первые четыре числа -- это ip-адрес сервера, пятое и шестое -- это порт для подключения. Вычисляется по формуле: первое*256 + второе.
Не закрывая первую консоль во второй консоли пишем:
$ telnet mirror.yandex.ru 56729 Trying 213.180.204.183... Connected to mirror.yandex.ru. Escape character is '^]'.В рамках этого соединения мы можем только получать данные. Вот примерный список FTP-команд:
ABOR - прервать передачу CWD - сменить директорию DELE - удалить файл на сервере LIST - детальный список файлов на сервере MDTM - узнать время модификации файла MKD - создать каталог на сервере NLST - упрощенный список файлов на сервере PASS - отправить пароль PASV - перейти в пассивный режим PORT - заставить сервер подключиться к клиенту на определенный порт (активный режим) PWD - вывести название текущего каталога QUIT - окончить соединение RETR - скачать файл с сервера RMD - удалить каталог на сервере RNFR - переименовать из RNTO - переименовать в SITE - серверо-специфицеские команды SIZE - узнать размер файла STOR - залить файл на сервер TYPE - установить режим передачи USER - отправить пользовательский логинПользуясь командами (и переподключаясь во второй консоли каждый раз на новый порт, который нам указывает сервер, скачиваем файл. Первая консоль:
LIST 150 Here comes the directory listing. 226 Directory send OK. CWD pub 250 Directory successfully changed. PASV 227 Entering Passive Mode (213,180,204,183,217,235). LIST 150 Here comes the directory listing. 226 Directory send OK. CWD tools 250 Directory successfully changed. PASV 227 Entering Passive Mode (213,180,204,183,230,239). LIST 150 Here comes the directory listing. 226 Directory send OK. CWD crosstool 250 Directory successfully changed. PASV 227 Entering Passive Mode (213,180,204,183,230,34). LIST 150 Here comes the directory listing. 226 Directory send OK. PASV 227 Entering Passive Mode (213,180,204,183,202,255). RETR index.html 150 Opening BINARY mode data connection for index.html (6922 bytes). 226 Transfer complete.Вторая консоль:
$ telnet mirror.yandex.ru 56729 Trying 213.180.204.183... Connected to mirror.yandex.ru. Escape character is '^]'. drwxr-xr-x 17 ftp ftp 4096 Jul 22 03:27 altlinux drwxr-sr-x 20 ftp ftp 4096 Jul 21 10:29 altlinux-beta drwxr-xr-x 7 ftp ftp 4096 Jul 21 10:43 altlinux-nightly drwxr-xr-x 17 ftp ftp 4096 Jul 22 07:38 archlinux drwxr-xr-x 7 ftp ftp 4096 Jul 21 10:56 archserver drwxr-sr-x 6 ftp ftp 4096 Sep 17 2007 asplinux-tigro drwxr-xr-x 4 ftp ftp 4096 Jul 21 10:56 astra drwxr-xr-x 39 ftp ftp 4096 Jul 21 10:35 calculate drwxrwxr-x 38 ftp ftp 4096 Jul 22 05:06 centos drwxr-xr-x 8 ftp ftp 4096 Jul 22 03:53 debian drwxrwsr-x 6 ftp ftp 4096 Jul 22 03:22 debian-backports drwxr-xr-x 5 ftp ftp 4096 Jul 22 02:36 debian-cd drwxrwxr-x 6 ftp ftp 4096 Jul 22 01:04 debian-multimedia drwxrwsr-x 6 ftp ftp 4096 Jul 21 10:34 debian-security drwxr-sr-x 7 ftp ftp 4096 Jul 21 20:40 epel drwxr-xr-x 7 ftp ftp 4096 Jul 22 05:08 fedora drwxrwxr-x 12 ftp ftp 4096 Jul 22 04:21 freebsd drwxr-xr-x 6 ftp ftp 4096 Jul 22 07:32 gentoo-distfiles drwxrwxr-x 169 ftp ftp 4096 Jul 22 07:32 gentoo-portage drwxr-xr-x 10 ftp ftp 12288 Jul 21 10:08 knoppix drwxr-xr-x 3 ftp ftp 4096 Jul 22 02:04 libreoffice drwxr-xr-x 7 ftp ftp 4096 Jul 21 10:32 linuxmint drwxr-xr-x 5 ftp ftp 4096 Jul 22 04:24 macports drwxr-xr-x 6 ftp ftp 4096 Jul 22 07:32 mageia drwxr-xr-x 39 ftp ftp 4096 Jun 30 09:26 mirrors drwxr-xr-x 6 ftp ftp 4096 Mar 11 14:53 mopslinux drwxr-xr-x 8 ftp ftp 4096 Jul 22 07:40 mozilla drwxr-xr-x 48 ftp ftp 4096 Jul 22 02:18 openbsd drwxr-xr-x 5 ftp ftp 4096 Jul 22 05:06 openmandriva drwxr-xr-x 8 ftp ftp 4096 Jul 21 17:33 opensuse drwxr-xr-x 8 ftp ftp 4096 Jul 22 06:07 pub drwxr-xr-x 8 ftp ftp 4096 Jul 21 10:31 puppyrus drwxr-xr-x 10 ftp ftp 4096 Jul 22 05:32 rosa drwxr-xr-x 4 ftp ftp 4096 Jul 21 10:33 runtu drwxrwxr-x 5 ftp ftp 4096 Jul 22 04:32 sabayon drwxr-xr-x 13 ftp ftp 4096 Jul 22 04:32 scientificlinux drwxr-xr-x 6 ftp ftp 4096 Apr 02 17:53 simplelinux drwxr-xr-x 42 ftp ftp 4096 Jul 22 00:34 slackware drwxr-xr-x 6 ftp ftp 4096 Jul 22 02:09 ubuntu drwxr-xr-x 30 ftp ftp 4096 Jul 22 04:16 ubuntu-cdimage drwxr-xr-x 12 ftp ftp 4096 Jul 22 06:16 ubuntu-releases Connection closed by foreign host. $ telnet mirror.yandex.ru 55787 Trying 213.180.204.183... Connected to mirror.yandex.ru. Escape character is '^]'. lrwxrwxrwx 1 ftp ftp 11 Feb 17 2013 FreeBSD -> ../freebsd/ lrwxrwxrwx 1 ftp ftp 11 Feb 17 2013 OpenBSD -> ../openbsd/ drwxr-xr-x 13 ftp ftp 4096 Nov 16 2011 linux drwxrwxr-x 3 ftp ftp 4096 Sep 23 2008 media drwxr-xr-x 15 ftp ftp 4096 Aug 03 2013 scm drwxrwxr-x 2 ftp ftp 4096 Aug 09 2013 site drwxr-xr-x 13 ftp ftp 4096 Nov 27 2011 software drwxr-xr-x 3 ftp ftp 4096 Apr 30 2008 tools Connection closed by foreign host. $ telnet mirror.yandex.ru 59119 Trying 213.180.204.183... Connected to mirror.yandex.ru. Escape character is '^]'. drwxrwxr-x 3 ftp ftp 4096 May 22 2013 crosstool Connection closed by foreign host. $ telnet mirror.yandex.ru 58914 Trying 213.180.204.183... Connected to mirror.yandex.ru. Escape character is '^]'. drwxrwxr-x 5 ftp ftp 4096 Mar 28 2012 files -rw-rw-r-- 1 ftp ftp 6922 May 22 2013 index.html -rw-rw-r-- 1 ftp ftp 543 May 22 2013 index.html.sign -rw-r--r-- 1 ftp ftp 962 Apr 02 07:57 sha256sums.asc Connection closed by foreign host. $ telnet mirror.yandex.ru 51967 Trying 213.180.204.183... Connected to mirror.yandex.ru. Escape character is '^]'. [тут вырезано содержимое получаемого файла] Connection closed by foreign host.