栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

使用Python连接到“通过TLS的显式FTP”(??)

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用Python连接到“通过TLS的显式FTP”(??)

*get* '227 Entering Passive Mode (10,19,1,137,195,128).n'

问题是服务器在对PASV命令的响应内返回了错误的IP地址。这对于某些内部防火墙后的内部网络中的服务器来说是典型的。在这种情况下,返回10.19.1.137,这是仅在本地网络中可用的IP地址。

这是FTP服务器的错误设置。但是不幸的是,这种中断的设置很常见,因此许多客户端通过忽略响应中给定的IP地址并改用控制连接的IP地址来解决此问题。ftplib不支持这种解决方法。但是可以用猴子修补它来提供这种支持:

from ftplib import FTP_TLS# replace original makepasv function with one which always returns# the peerhost of the control connections as peerhost for the data# connection_old_makepasv = FTP_TLS.makepasvdef _new_makepasv(self):    host,port = _old_makepasv(self)    host = self.sock.getpeername()[0]    return host,portFTP_TLS.makepasv = _new_makepasvftp = FTP_TLS(ipAddress)ftp.login(...)ftp.nlst()

已通过Python 2.7.12和Python 3.5.2成功测试



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/610724.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号