配置错误的被动连接的Python ftplib

配置错误的被动连接的Python ftplib,python,ftp,ftplib,ftps,Python,Ftp,Ftplib,Ftps,我正在使用python3 ftplib.FTP_TLS类连接到外部FTP/FTPS服务器。在被动模式下建立连接时,服务器会使用内部网络IP地址(如10.10.XX.XX)进行响应 由于我在网络之外,无法访问提供的IP地址上的服务器,ftplib挂断。将FTPS连接设置为活动状态不起作用 强制ftplib使用原始主机名或外部IP地址的最佳方法是什么?我使用的解决方案来自。重写makepasv()方法以忽略返回的IP地址并使用原始主机: class FTP_TLS_IgnoreHost(ftplib

我正在使用python3 ftplib.FTP_TLS类连接到外部FTP/FTPS服务器。在被动模式下建立连接时,服务器会使用内部网络IP地址(如10.10.XX.XX)进行响应

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


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

我使用的解决方案来自。重写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')

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

我使用的解决方案来自。重写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')

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

是的,谢谢这是一个重复的答案,所以它会被谷歌推高一点。但是你的重复问题很好,因为它有助于找到解决方案给那些知道根本原因的人(其他操作没有)。是的,谢谢这是一个重复的答案,对另一个答案投了更高的票,所以它会让谷歌有一点上扬。但是你的重复问题无论如何都是好的,因为它有助于为那些知道根本原因的人找到解决方案(另一个OP没有)。