【问题标题】:ftplib - Unable to connect to FTP serverftplib - 无法连接到 FTP 服务器
【发布时间】:2019-08-01 19:46:33
【问题描述】:

我正在尝试使用官方 Python 文档 (https://docs.python.org/2/library/ftplib.html) 中显示的非常基本的示例连接到 ftp.debian.org,但我不断收到错误消息。希望有人能指出我哪里出错了。


    import socket
    from ftplib import FTP

    try:
        print("Attempting login...")
        ftp = FTP('ftp.debian.org')
        ftp.login()
        # print("Listing directory...")
        # ftp.retrlines('LIST')
        # print("Ending the connection...")
        # ftp.quit()
    except socket.timeout:
        print("Socket timeout caught")
    finally:
        print("FTP connection test has ended.")

我收到的错误如下:
回溯(最近一次通话): TimeoutError: [WinError 10060] 连接尝试失败,因为连接方在一段时间后没有正确响应,或者连接失败,因为连接的主机没有响应

【问题讨论】:

  • 您的代码看起来不错。不过,服务器ftp.debian.org 在端口 21 上没有 FTP 服务器。如果您使用ftp.redhat.com 尝试相同的代码,它可以工作。
  • @Tyger:谢谢你的链接。看起来 OP 有一个超时错误,但我不认为服务器正在侦听端口 21,正如上面 Bjorn 所指出的那样。
  • @BjörnMarschollek:感谢您的提醒。我尝试使用 ftp.redhat.com 并得到相同的错误,尽管服务器在端口 21 上侦听。我相信我的防火墙或某些安全程序阻止我使用 FTP(我正在运行此脚本顺便说一句,我的工作电脑)。

标签: python python-3.x pycharm


【解决方案1】:

您尝试连接的地址似乎有问题。我尝试了您的代码并得到“连接被拒绝”。由于地址本身似乎是用于 ftp 的,因此我尝试检查端口 21(ftp 的标准)是否打开并且看起来不像。我会假设这个特定的 ftp 服务器是在标准端口以外的端口上设置的。

现在您可以尝试找出在该地址为 ftp 设置了哪个端口,并在您的代码中指定它,或者如果这只是一个测试,请尝试使用另一台服务器。

https://pentest-tools.com/network-vulnerability-scanning/tcp-port-scanner-online-nmap#

【讨论】:

  • 我正在我的工作计算机上测试脚本,所以我假设我不允许随意使用 FTP。话虽如此,您知道任何 FTP 服务器可以让我在没有任何凭据的情况下匿名登录吗?我想在家里测试这个脚本。 (我试过 ftp.redhat.com 但无法通过密码提示)
猜你喜欢
  • 1970-01-01
  • 2011-05-28
  • 2021-02-03
  • 1970-01-01
  • 2021-03-17
  • 1970-01-01
  • 2023-03-22
  • 2015-09-21
  • 2017-11-11
相关资源
最近更新 更多