FTP и консоль

Нашли баг? Воспользуйтесь поиском чтобы убедиться что его не нашли до вас и если он не упоминается добавьте его описание (желательно пошаговое).
Чем для автора программы отличаются баги, недоработки и фичи.

Модератор: motyara

Ответить
dustdisk
Сообщения: 5
Зарегистрирован: Вт мар 24, 2009 5:59 pm

FTP и консоль

Сообщение dustdisk »

Всем привет!

При работе по FTP и использовании консоли обнаружил следующее:

1. Не работает команда перехода в home директорию пользователя (cd ~username).
2. Просто cd не работает тоже, при чем, судя из сообщения об ошибке (500 'CD': command not understood), cd превращается в CD (может это и есть причина неработоспособности, ведь cd и CD это не одно и то же?)
3. Не работают переходы в каталоги, лежащие вне текущего. Например, после захода на FTP в домашний каталог пользователя, если я, например, сделаю cd /tmp, то программа расценивает /tmp как относительный путь, а не абсолютный и пытается перейти в $HOME/tmp, что естественно сделать ей не удается.
Аватара пользователя
Max Diesel
Автор программы
Сообщения: 3431
Зарегистрирован: Пт окт 12, 2007 3:26 pm
Контактная информация:

Сообщение Max Diesel »

1 - а что такое "home директория пользователя" если не секрет?
2 - вообще-то недрессированные FTP-серверы не знают команду "cd" (как впрочем и команду "CD"), в данном случае эта команда интерпретируется файловым менеджером и FTP-серверу отправляется в виде команды "CWD".
3 - да, действительно пути начинающиеся с прямого слэша расцениваются программой как относительные. Исправлено. Спасибо за информацию. Фактически при написании кода я зачастую использовал обратные слэши, а потому если написать "cd \tmp", то будет достигнут желаемый результат. В новой версии будут восприниматься оба вида слэшей.
dustdisk
Сообщения: 5
Зарегистрирован: Вт мар 24, 2009 5:59 pm

Re:

Сообщение dustdisk »

Max Diesel писал(а):1 - а что такое "home директория пользователя" если не секрет?
2 - вообще-то недрессированные FTP-серверы не знают команду "cd" (как впрочем и команду "CD"), в данном случае эта команда интерпретируется файловым менеджером и FTP-серверу отправляется в виде команды "CWD".
3 - да, действительно пути начинающиеся с прямого слэша расцениваются программой как относительные. Исправлено. Спасибо за информацию. Фактически при написании кода я зачастую использовал обратные слэши, а потому если написать "cd \tmp", то будет достигнут желаемый результат. В новой версии будут восприниматься оба вида слэшей.
1. Ну как же! Я ж написал - каталог ~username. Или то, что хранится в $HOME (обычно), но так как переменные среды вряд ли могут быть доступны в консоли UC, то скорее всего должна работать команда cd ~username.
2. Я пробовал с FTP серверами на HP-UX, AIX и SunOS. В Totalе никакой дрессировки не нужно :)
3. Спасибо, буду ждать следующего билда :)
Аватара пользователя
Max Diesel
Автор программы
Сообщения: 3431
Зарегистрирован: Пт окт 12, 2007 3:26 pm
Контактная информация:

Сообщение Max Diesel »

1 - этот самый "~username" является каталогом или это переменная среды? Если каталог, то ни разу ни на одном FTP-сервере мне такой каталог не встречался, а если переменная среды, то... она мне тоже не встречалась при общении с FTP. И должен заметить что если в TC выполнить команду "cd ~username", то также перехода не произойдет.
2 - похоже моя мысль не понята, FTP-серверы не знают этой команды, а в TC она если и срабатывает, то это потому что программа ее знает и при ее использовании серверу-то отправляет "CWD". Впрочем я не заметил чтобы TC корректно обрабатывал команду "cd", написанную без параметров.
dustdisk
Сообщения: 5
Зарегистрирован: Вт мар 24, 2009 5:59 pm

Re:

Сообщение dustdisk »

Max Diesel писал(а):1 - этот самый "~username" является каталогом или это переменная среды? Если каталог, то ни разу ни на одном FTP-сервере мне такой каталог не встречался, а если переменная среды, то... она мне тоже не встречалась при общении с FTP. И должен заметить что если в TC выполнить команду "cd ~username", то также перехода не произойдет.
2 - похоже моя мысль не понята, FTP-серверы не знают этой команды, а в TC она если и срабатывает, то это потому что программа ее знает и при ее использовании серверу-то отправляет "CWD". Впрочем я не заметил чтобы TC корректно обрабатывал команду "cd", написанную без параметров.
1. ~username значит домашний каталог пользователя с именем username. Узнать домашний каталог пользователя по имени username можно из файла /etc/passwd:

cat /etc/passwd | grep username

Домашний каталог - это каталог, в который пользователь попадает после логина (через Telnet или FTP - неважно).

В Total Commander в консоли у меня работают обе: и cd ~ (переходит в домашний каталог текущего пользователя) и, собственно, cd ~username (переходит в домашний каталог пользователя username). Таким образом, например, если я логинюсь по FTP под именем user1, то на панели сразу же отображается домашний каталог этого пользователя. Если я погуляю по каталогам, а затем захочу быстро вернуться в домашний, то набрав в консоли Total Commander команду cd ~user1 я моментально вернусь в тот каталог, который изначально был после логина (то есть в домашний каталог). Если на этом хосте есть еще другие логины, например vasyapupkin, то набрав команду cd ~vasyapupkin, я сразу же попадаю в домашний каталог пользователя vasyapupkin. Я только что это проверил и все работает.

2. На счет cwd и cd - вопрос спорный. Дело в том, что будучи залогиненым с одного HP-UX хоста на другой HP-UX хост по FTP, я вижу следующее:

FTP server (Version 1.1.214.4(PHNE_38458) Tue Jul 29 07:36:52 GMT 2008) ready.
Name (ftpbox:default): user1
331 Password required for user1.
Password:
230 User user1 logged in.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cwd
?Invalid command
ftp> cd
(remote-directory) /tmp
250 CWD command successful.
ftp> CWD
?Invalid command
ftp> CD
?Invalid command
ftp>

Как видно из этого лога общения по FTP, команда cwd не принимается, но она упоминается при выводе результата операции по смене каталога (CWD command successful). Справка, вызываемая по команде ? так же не содержит команды cwd, а только cd (и lcd - это смена локального каталога, а не удаленного).

Но как бы там ни было, возможно ведь сделать, чтобы UC понимал команду cd и транслировал ее в нужный вид? С чем я соглашусь тут, так это с тем, что таки да - Total Commander не понимает команду cd без параметров, хотя в терминале она делает то же самое, что и cd ~ (переходит в домашний каталог текущего пользователя). Но если UC будет понимать cd ~ то необходимость в cd без параметров отпадет.
Аватара пользователя
Max Diesel
Автор программы
Сообщения: 3431
Зарегистрирован: Пт окт 12, 2007 3:26 pm
Контактная информация:

Сообщение Max Diesel »

1 - подкорректировал код, теперь путь начинающийся с тильды будет рассматриваться программой как абсолютный, что вероятно даст желаемый результат. Впрочем на моих серверах команда "cd ~" сервером воспринимается корректно, но при указании имени пользователя эффект такой же, как и при попытке "сделать прыжок" в несуществующий каталог.
2 - вероятно речь идет о каком-то действительно "дрессированном" FTP-сервере... во всяком случае вот список команд, которые по мнению INDY понимают FTP-серверы: RETR, STOR, STOU, APPE, ALLO, REST, RNFR, RNTO, ABOR, DELE, RMD, MKD, PWD, LIST, NLST, SITE, SYST, STAT, HELP, NOOP, PORT, PASV, TYPE, STRU, MODE, USER, PASS, ACCT, CWD, CDUP, SMNT, REIN, QUIT. Команда CWD среди них присутствует, а CD - отсутствует.
dustdisk
Сообщения: 5
Зарегистрирован: Вт мар 24, 2009 5:59 pm

Re:

Сообщение dustdisk »

Max Diesel писал(а):1 - подкорректировал код, теперь путь начинающийся с тильды будет рассматриваться программой как абсолютный, что вероятно даст желаемый результат. Впрочем на моих серверах команда "cd ~" сервером воспринимается корректно, но при указании имени пользователя эффект такой же, как и при попытке "сделать прыжок" в несуществующий каталог.
2 - вероятно речь идет о каком-то действительно "дрессированном" FTP-сервере... во всяком случае вот список команд, которые по мнению INDY понимают FTP-серверы: RETR, STOR, STOU, APPE, ALLO, REST, RNFR, RNTO, ABOR, DELE, RMD, MKD, PWD, LIST, NLST, SITE, SYST, STAT, HELP, NOOP, PORT, PASV, TYPE, STRU, MODE, USER, PASS, ACCT, CWD, CDUP, SMNT, REIN, QUIT. Команда CWD среди них присутствует, а CD - отсутствует.
1. То есть теперь команда cd ~ будет переходить в домашний каталог текущего FTP пользователя? Тогда почему же технически нереализуем переход в домашний каталог другого пользователя с помощью cd ~имя_пользователя?
2. Я понял разницу. cd - это команда FTP клиента, а вышеперечисленное вами, в том числе и CWD - это команда FTP протокола в целом.
Аватара пользователя
Max Diesel
Автор программы
Сообщения: 3431
Зарегистрирован: Пт окт 12, 2007 3:26 pm
Контактная информация:

Сообщение Max Diesel »

1 - команда "cd ~" передается серверу как "CWD ~", а он в ответ на нее (при моих FTP-серверах) меняет путь на корневой каталог... Переход в "домашний каталог" другого пользователя в такой ситуации должен бы обеспечивать FTP-сервер, так как движение к этой цели "обходным путем" средствами файлового менеджера мне кажется слегка необоснованным.
dustdisk
Сообщения: 5
Зарегистрирован: Вт мар 24, 2009 5:59 pm

Re:

Сообщение dustdisk »

Max Diesel писал(а):1 - команда "cd ~" передается серверу как "CWD ~", а он в ответ на нее (при моих FTP-серверах) меняет путь на корневой каталог... Переход в "домашний каталог" другого пользователя в такой ситуации должен бы обеспечивать FTP-сервер, так как движение к этой цели "обходным путем" средствами файлового менеджера мне кажется слегка необоснованным.
А на чем этот FTP сервер работает? Дело в том, что любой FTP сервер на любых UNIX и Linux при получении команды cd ~ трактует эту тильду исключительно как символ домашнего каталога текущего пользователя (и никак не корень всего FTP). И трактовка эта заложена не в настройках самого FTP сервера, а в самой ОС.
Аватара пользователя
Max Diesel
Автор программы
Сообщения: 3431
Зарегистрирован: Пт окт 12, 2007 3:26 pm
Контактная информация:

Сообщение Max Diesel »

Сервера работают под Linux'ом. Я не утверждаю что тильда выводит только в корень и именно поэтому в скобках указал что это "при моих FTP-серверах"... вполне возможно что там домашний каталог.
Technotronic
Сообщения: 1
Зарегистрирован: Чт июл 14, 2011 11:55 am

Re: FTP и консоль

Сообщение Technotronic »

хЕлп. Не работает фтп никак, все время пишет что соединение с сервером невозможно, сеть через прокси, прокси вписал правильно, кагда проверяю новую версию пишет что не вышла, значит коннект есть, в тотал блин работает фтп а в анрил нет (( все перепробовал, на прокси нет авторизации но я все равно все способы перепробовал авторизации на всякий случай, даже пробовал порты открывать другие в прокси, обновление работает а фтп все равно нет. Данные подключения к серверу точно правильные, проверял несколько раз тем же тоталом. что можно сделать с этим?
Аватара пользователя
Max Diesel
Автор программы
Сообщения: 3431
Зарегистрирован: Пт окт 12, 2007 3:26 pm
Контактная информация:

Сообщение Max Diesel »

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