加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

[转载]使用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] 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。

今晚好好搞搞

0

  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有