[转载]使用python ftplib进行FTP连接时报Errno 10060
(2013-06-28 15:38:20)
标签:
转载 |
今天写了一个脚本,调用ftplib连接FTP服务器,可以浏览FTP服务器的目录,下载上传FTP资源,在自己的虚拟机上进行测试时,报一个Errno 10060错误,很奇怪,百思不得其解,是我的语句写错了?
在FTP服务器上进行操作就没问题,使用ftplib连接公网的FTP服务器也没问题,到底肿么回事?
后来想了一下,特么的不会又是防火墙的问题吧,可是我明明在iptables把FTP打开了啊。而且在windows环境下,使用ftp客户端连接是没有问题的,肿么回事?
后来在CentOS上调用system-config-firewall把FTP加入到可信访问就没问题了,真奇怪
初步怀疑是防火墙的规则写的有一些问题,毕竟是INPUT,是不是进入的访问数据会被accept,返回的数据会被reject?
----------------------------------------------------------------------------------------------------------------------------------------
原来是python的默认ftplib启用passive(被动模式),因为被动模式会启用1024之后的端口,所以就会出现问题,把passive模式取消后,就没问题了
ftp=FTP(‘192.168.1.104’,’ftpuser’,’!qaz2wsx’)
ftp.set_pasv(Flase)
ftp.dir()
>>> ftp.dir()
-rw-r--r-- 1
501
501
1358 Feb 16 06:06 http_check.py
-rw-r--r-- 1
0
0
1138 Feb 16 06:07 http_check.pyc
-rw----r-- 1
500
500
541 Feb 13 00:51 iptables
drwxr-xr-x 2
501
501
4096 Feb 16 09:17 test
-rw-r--r-- 1
0
0
0 Feb 16 09:52 test.jpg
-rw-r--r-- 1
0
0
4536 Feb 11 12:43 vsftpd.conf
-rw-r--r-- 1
0
0
976 Feb 16 00:41 web_check.py
-rw-r--r-- 1
0
0
1344 Feb 16 00:41 web_check.pyc
-rw-r--r-- 1
501
501
1347 Feb 11 14:36 yum_change.py
真奇怪,看来得好好研究一下底层的东西
-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j
ACCEPT
毕竟iptables不熟悉,nnd,今晚先看看iptables如何设置吧
在python中使用ftplib访问ftp server时,创建目录,更换目录是木有问题的,只要调用dir()就会如下错误:
Traceback (most recent call last):
File
"<pyshell#16>",
line 1, in <module>
ftp.dir()
File
"C:Python32libftplib.py", line
528, in dir
self.retrlines(cmd, func)
File
"C:Python32libftplib.py", line
439, in retrlines
with
self.transfercmd(cmd) as conn,
File
"C:Python32libftplib.py", line
379, in transfercmd
return
self.ntransfercmd(cmd, rest)[0]
File
"C:Python32libftplib.py", line
338, in ntransfercmd
conn =
socket.create_connection((host, port), self.timeout)
File
"C:Python32libsocket.py", line
404, in create_connection
raise
err
File
"C:Python32libsocket.py", line
395, in create_connection
sock.connect(sa)
socket.error: [Errno 10060] 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。
今晚好好搞搞