Ошибка FTP «500 Недопустимая команда PORT» при попытке подключения из сценария dockerized Python - PullRequest
1 голос
/ 16 апреля 2020

Я создал скрипт Python Flask, который перемещает один файл с FTP-сервера на другой при возникновении определенных условий. (оба FTP-сервера находятся в двух разных Docker) На моей локальной машине скрипт работает нормально, но когда я пытаюсь поместить его в Docker, он загружается, но когда приходит запрос, я получаю две ошибки:

ftplib.error_perm: 500 Illegal PORT command.
ftplib.error_perm: 550 Illegal PORT command. Probably the file is no longer avaible on the FTP server?

Так как это с моей локальной машины работает хорошо, я думал, что это может быть проблема с docker.

Это код, который запускает копию:

for filename, n in n_request:
    print(self.color + "File name: " + filename + " Count: " + str(n) + RESET, flush=True)
    if n >= int(self.count):
        print(self.color + "Mooving file: " + filename + " from server: " + str(self.server) + RESET, flush=True)
        start = time.time()
        check = move_file(filename, self.server, self.client)
        end = time.time()

И это функция move_file:

def move_file(filename, server, client):
    from_ftp = FTP_handler(server[0], server[1], DEFAULT_USER, DEFAULT_PSW)
    to_ftp = FTP_handler(client[1], client[2], DEFAULT_USER, DEFAULT_PSW)
    return transfer_file(from_ftp, to_ftp, filename)

Соединение установлено в пассивном режиме.

1 Ответ

0 голосов
/ 16 апреля 2020

Если вы получаете "500 Illegal PORT command." , вы используете активный режим, а не пассивный режим. Дважды проверьте это и убедитесь, что вы действительно используете пассивный режим.

Объяснение сообщения об ошибке (хотя и в другом контексте) см .:
ftp_get: Команда недопустимого порта .

...