无法连接到FTP服务器

1 投票
3 回答
4504 浏览
提问于 2025-04-18 07:23

我无法连接到FTP服务器,出现了以下错误:

 vmware@localhost ~]$ python try_ftp.py 
Traceback (most recent call last):
  File "try_ftp.py", line 5, in <module>
    f = ftplib.FTP('ftp.python.org')
  File "/usr/lib/python2.6/ftplib.py", line 116, in __init__
    self.connect(host)
  File "/usr/lib/python2.6/ftplib.py", line 131, in connect
    self.sock = socket.create_connection((self.host, self.port), self.timeout)
  File "/usr/lib/python2.6/socket.py", line 567, in create_connection
    raise error, msg
socket.error: [Errno 101] Network is unreachable

我正在写一段非常简单的代码

import ftplib
f = ftplib.FTP('ftp.python.org')
f.login('anonymous','sausaxen@xyz.com')
f.dir()
f.retrlines('RETR motd')
f.quit()

我检查了我的代理设置,发现它设置为“系统代理设置”

请问我该怎么办。

谢谢,
萨姆

3 个回答

0

试着对 "ftp.python.org" 这个地址进行 ping 测试。

如果你需要通过代理服务器来连接,记得检查一下你的环境变量中是否设置了 ftp_proxy。通常,我会明确地设置代理。

另外,你也可以尝试使用 httplib 或者 requests 这个库。

1

地址 ftp.python.org 似乎有问题。

更新:使用 f = ftplib.FTP('ftp.python.org') 时出现了错误信息,但用 ping 命令却能正常连接。

2
[torxed@archie ~]$ telnet ftp.python.org 21
Trying 82.94.164.162...
Connection failed: Connection refused
Trying 2001:888:2000:d::a2...
telnet: Unable to connect to remote host: Network is unreachable
[torxed@archie ~]$ python
Python 3.3.5 (default, Mar 10 2014, 03:21:31) 
[GCC 4.8.2 20140206 (prerelease)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import ftplib
>>> f = ftplib.FTP('ftp.acc.umu.se')
>>> 

问题不在于主机名本身(你提到的ping命令可以正常工作),而是默认的21号端口有问题。或者说,他们在那个主机上根本没有运行标准的FTP服务器,而是用HTTP作为传输方式:https://www.python.org/ftp/python/

你可以试试ftp.acc.umu.se这个地址。

撰写回答