ftplib问题(无法打开数据连接)

大家好,
我正在使用一个简单的程序,该程序将文件上传到远程FTP服务器上.
这是一个示例(不是整个程序):
def商店(self,主机名,用户名,密码,destdir,srcp ath):
self.ftp = ftplib.ftp(主机名)
self.ftp.login(用户名,密码)
self.ftp.set_pasv(false)
self.ftp.cwd(destdir)
fobj = file(srcpath," rb")
destname = os.path.split(srcpath)[1]
self.ftp.storbinary(" stor"+destname,fobj)
FTP服务器无法使用被动连接,我无能为力
关于那个.这是问题:我可以从
我的家用计算机,是NAT防火墙后面的.我也可以连接到
它是从另一台计算机上的,但我无法上传任何文件.我试过了
使用简单的" FTP -V -D"命令行调试,显然是
问题在于" EPRT"命令:
ftpls
--- EPRT | 1 | 195.228.74.135 | 55749 |
200端口命令成功.
- -列表
425无法打开数据连接.
ftp>
好吧,EPRT给出的端口号不好 - 它是此的封闭端口
计算机.我可以为此打开一个小端口范围,但我不喜欢
打开所有端口并完全禁用防火墙.
这是我的问题:
1.如何指示FTPLIB使用特定端口进行传入
连接? (例如,端口在55000和56000之间).
2.同一程序如何从另一台计算机起作用
那是NAT防火墙的后面?
谢谢,
laszlo

# 回答1


是的,我知道.但是它确实从我的NAT网络内部起作用.我没有任何线索
如何.我确定它正在使用活动连接,因为此服务器
无法使用被动模式.这可能是一个非常聪明的防火墙
数据包嗅探" FTP端口"命令. (?)无论如何,问题不是
使用这台计算机,这是一个反例.
它不需要.我可以重新配置防火墙以直接向前
从指定的端口范围到给定的IP的所有传入的TCP连接
内部网络内部.但是我什至不需要这样做.这
问题在于不在NAT后面的计算机.这是一个
电脑直接连接到Internet,但它具有防火墙
安装.所以除了一件事外,一切都会好起来的:我应该告诉
FTPLIB要打开哪个端口,并在我的防火墙上打开这些端口.为了
例如,我可以在50000和60000之间打开TCP端口,然后告诉
FTPLIB在端口和EPRT命令中使用50000和60000之间的端口.
我怎样才能做到这一点?如果不可能,那么解决方法是什么?
(绝对不想在一个上完全关闭防火墙
生产服务器.)
是的,但是此FTP服务器无法使用被动模式,我无法更改此操作.
最后,如果不能在FTPLIB中完成此操作,那么我想
建议将此方法添加到FTP对象. :-)
最好的,
laszlo

标签: python

添加新评论