1

У меня есть FTP-скрипт, который я использую для автоматизации передачи файлов. Передача отлично работает на моем ПК (XP SP2), но когда я пытаюсь запустить его на виртуальной машине на моем ПК (XP SP2), команды "put" выдают:

504 Command not implemented for that parameter.

Файл FTP:

open [ftp site]
[username]
[password]
cd [directory on FTP server]
binary
hash
put ..\[subfolder1]\[Subfolder2]\[subfolder3]\[filename]
bye

FTP-сайт / сервер находится по всему миру, и не под моим контролем.

Из того, что я понимаю для 504, это означает, что команда НИКОГДА не должна работать, но так как тот же сценарий РАБОТАЕТ на моем ПК (хостинге ВМ), что исключает синтаксис, присвоение имен файлам и т.д.

Команда put при запуске с виртуальной машины фактически создает файл 0 длины на целевом FTP-сервере, но не заполняет файл.

3 ответа3

2

Мне действительно кажется, что это связано с проблемой сети.

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

Есть ли у вас такая же ошибка с другими командами, которые передают данные? Например, "СПИСОК".

Попробуйте пассивный режим (команда "PASV"), поскольку он не откроет другой канал для данных.

0

Машина, на которой размещена виртуальная машина, отличается от самой виртуальной машины.
Если команда работает в базовой ОС машины, этот FTP-сервер разрешает ее.
Когда команда не работает в ОС VM, этот FTP-сервер (другой) не разрешает ее.

Я что-то упускаю в этом вопросе?
Хорошо, вы говорите, что FTP-сервер тот же, и
Вы не можете FTP-PUT с клиента виртуальной машины, где-как он работает с клиентом ftp вашей базовой ОС?

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

Вы можете делать снимки с помощью Wireshark или tcpdump, отфильтрованных для TCP-порта сервера.


Обновление на основе вашего комментария.
я бы все еще сказал, что вам нужно сделать снимок, чтобы увидеть, что терпит неудачу.
Однако есть еще одна вещь, которую вы можете сделать, ftp -v выдаст все управляющие сообщения, когда они происходят. Вы можете использовать это, чтобы увидеть, как два FTP-клиента ведут себя по-разному, чтобы определить проблему. К сожалению, это не правильный вариант ... было что-то, что отследило обмен командами, не может получить это сейчас. Может быть, кто-то здесь помнит.

0

Из моего исследования, 504 может иметь другие значения, кроме Command not implemented for that parameter . Это также может быть:

504: истекло время ожидания шлюза
504: неизвестный механизм безопасности

Надеюсь, это поможет. Первый из них особенно наводит на мысль.

Вопросы:
Что происходит, когда вы вводите пут?
Вы пытались использовать протокол анализатор, чтобы найти точную разницу между связью с ПК и виртуальной машиной?

РЕДАКТИРОВАТЬ

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .