【问题标题】:unable to use IP address with ftplib (Python)无法在 ftplib (Python) 中使用 IP 地址
【发布时间】:2013-05-07 20:56:22
【问题描述】:

我已经使用 ftplib 创建了一个 FTP 客户端。我在我的一个 Ubuntu 虚拟机上运行服务器,在另一个上运行客户端。我想使用 ftplib 连接到服务器,我正在通过以下方式进行连接:

host = "IP address of the server"
port = "Port number of the server" 

ftpc = FTP()
ftpc.connect(host, port)

我收到以下错误!

  Traceback (most recent call last):
  File "./client.py", line 54, in <module>
    ftpc.connect(host, port)
  File "/usr/lib/python2.7/ftplib.py", line 132, in connect
    self.sock = socket.create_connection((self.host, self.port), self.timeout)
  File "/usr/lib/python2.7/socket.py", line 571, in create_connection
    raise err
socket.error: [Errno 111] Connection refused

当我浏览 python 的文档时,我可以看到 ftplib 仅与 FTP(“域名”)中的域名一起使用。我可以使用 IP 地址代替域名吗?就我而言,我无法理解错误。如果有人能帮助我,那就太好了。

另外,如果我在服务器上使用端口 21,我会收到套接字错误:连接被拒绝。如何为我的 FTP 服务器使用端口 21?

谢谢。

【问题讨论】:

  • 连接被拒绝意味着你的代码实际上到达了远程地址,但那台机器要么没有运行 ftp 服务器,要么端口被防火墙挡住了。使用 dns 名称没有任何意义——它只是一个抽象层。无论如何,一切都在 IP 上运行。
  • 感谢您的回复。如何检查端口是否有防火墙?
  • 在托管 FTP 服务器的服务器上,以 rootsudo iptables --list 运行 iptables --list
  • 从输出中我可以看到它全部接受。这是否意味着它没有防火墙? Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination
  • 从客户端机器尝试使用ftp命令行客户端手动ftp,看看它说了什么。

标签: python ftp-client ftplib


【解决方案1】:

您似乎正在尝试使用 ftplib 连接到 SFTP 服务器,这会导致连接被拒绝错误。尝试使用 pysftp 而不是 ftplib,看看它是否有效。

在虚拟机上,通过在控制台输入 ftp 和 sftp 命令进行测试。您将了解机器在哪个服务器上运行,即 ftp 或 sftp。

【讨论】:

    【解决方案2】:

    为了解决这个问题,我安装并配置了 vsftpd:

    1. sudo apt install vsftpd(如果不存在)
    2. sudo vim /etc/vsftpd.conf
    3. 设置“listen=YES”

    【讨论】:

      猜你喜欢
      • 2021-10-06
      • 1970-01-01
      • 2014-11-04
      • 2023-03-15
      • 1970-01-01
      • 2018-03-03
      • 2022-11-26
      • 1970-01-01
      • 2021-01-26
      相关资源
      最近更新 更多