【问题标题】:Python ftplib with misconfigured passive connection [duplicate]具有错误配置的被动连接的 Python ftplib [重复]
【发布时间】:2019-05-20 16:33:25
【问题描述】:

我正在使用 python3 ftplib.FTP_TLS 类连接到外部 FTP/FTPS 服务器。在被动模式下建立连接时,服务器会返回一个内部网络 IP 地址,例如 10.10.XX.XX。

由于我在网络之外,我无法访问提供的 IP 地址上的服务器,并且 ftplib 挂断了。将 FTPS 连接设置为活动状态不起作用。

强制 ftplib 使用原始主机名或外部 IP 地址的最佳方法是什么?

【问题讨论】:

  • 是的,谢谢它是重复的,赞成另一个答案,所以它被谷歌撞了一下。
  • 但是您的重复问题无论如何都很好,因为它有助于为那些知道根本原因(其他 OP 没有)的人找到解决方案。

标签: python ftp ftplib ftps


【解决方案1】:

我使用的解决方案来自this article。您重写 makepasv() 方法以忽略返回的 IP 地址并使用原始主机:

class FTP_TLS_IgnoreHost(ftplib.FTP_TLS):
    def makepasv(self):
        _, port = super().makepasv()
        return self.host, port

ftp = FTP_TLS_IgnoreHost('host', 'user', 'password')

可能还有其他好的解决方案,但我认为这很巧妙。

【讨论】:

    猜你喜欢
    • 2012-11-12
    • 1970-01-01
    • 2012-02-19
    • 1970-01-01
    • 2018-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多