尝试从 dockerized Python 脚本连接时出现 FTP 错误"500 Illegal PORT command"



我创建了一个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)

连接设置为处于被动模式。

如果您得到"500非法PORT命令。">,您使用的是主动模式,而不是被动模式。仔细检查并确保真正使用被动模式。

有关错误消息的解释(即使在不同的上下文中(,请参阅:
ftp_get:Invalid PORT命令。

最新更新