当前位置: 首页 > 面试题库 >

无法使用ftplib列出FTP目录-但是FTP客户端可以使用

朱丰
2023-03-14
问题内容

我正在尝试连接到FTP,但无法运行任何命令。

ftp_server = ip
ftp_username = username
ftp_password = password

ftp = ftplib.FTP(ftp_server)
ftp.login(ftp_username, ftp_password)
'230 Logged on'

ftp.nlst()

ftp.nlst引发此错误:

错误:
[WinError 10060]连接尝试失败,因为一段时间后连接方未正确响应,或者由于连接的主机未能响应,建立的连接失败

我已经使用FileZilla测试了连接(在同一台计算机上运行),并且工作正常。

这是FileZilla日志:

Status: Connection established, waiting for welcome message...
Status: Insecure server, it does not support FTP over TLS.
Status: Logged in Status: Retrieving directory listing...
Status: Server sent passive reply with unroutable address. Using server address instead.
Status: Directory listing of "/" successful

问题答案:

状态:服务器发送了具有不可路由地址的被动回复

以上表示FTP服务器配置错误。它将其内部网络IP发送到无效的外部网络(到客户端– FileZilla或Python
ftplib)。FileZilla可以检测到该错误并自动回退到服务器的原始IP地址。

Python ftplib不执行这种检测。

您需要修复FTP服务器以返回正确的IP地址。

如果修复服务器不可行(这不是您的服务器,并且管理员不合作),则可以使ftplib忽略返回的(无效)IP地址,并使用原始地址来替代FTP.makepasv

class SmartFTP(FTP):
    def makepasv(self):
        invalidhost, port = super(SmartFTP, self).makepasv()
        return self.host, port

ftp = SmartFTP(ftp_server)

# the rest of the code is the same


 类似资料:
  • FileZilla是一个开源的FTP客户端,可以在Linux和Windows等多种平台上使用。 此客户端还支持通过SFTP和FTPS的安全连接进行FTP。 您可以使用此软件在网络服务器中上传和管理文件。 当您希望上传您的网站时,文件数量或文件大小都非常大。 然后你可以使用FTP上传,因为通过cPanel文件管理器上传一个非常大的文件会导致上传错误。 大多数cPanel帐户都附带系统FTP帐户,您可

  • 我们有一个ftp服务器,下面只有很少的目录和文件,我可以通过浏览器连接并成功访问目录。但是,当使用同一服务器时:具有凭据的端口无法连接。还尝试使用JSR233采样器列出文件,但没有成功。 请引导。 TestPlan:FTP请求默认值(服务器IP和端口:21) 对于FTP请求,获取如下错误:响应消息:java。木卫一。FileNotFoundException:(系统找不到指定的路径)请求正在进行:

  • 问题内容: 我正在Java中使用 Apache Commons-Net 库 我想要的是使用Java代码在客户端阶段设置FTP服务器的连接超时 例如: 如果我查看FTP服务器的vsftpd.conf设置文件, 有一个设置 我想知道FTP客户端是否可以使用Java代码控制此空闲超时 我尝试了以下方法,但并非所有方法都有效 请帮我 :) 问题答案: FTP客户端无法控制FTP服务器的设置。 但是您要问的

  • 这是一个用 C# 开发的 FTP 客户端组件

  • 问题内容: 使用Python和ftplib,我正在编写一个泛型函数来检查FTP目录中的项目是文件还是目录。由于使用MLSD功能可能不一定适用于所有服务器(我的一个用例并未提供此功能),因此我尝试通过这种有效但粗略的方式来确定它,方法是尝试将目录更改为对象,如果对象是文件,将引发异常,并相应地设置文件类型。 我已经在Internet和图书馆文档中搜索了其他方法,但是找不到在大多数情况下都可以使用的方

  • 我正在尝试创建一个非常基本的JavaFTP服务器。 处理传入套接字、接受它并将其转换为客户机线程的代码似乎工作得很好,但由于某些原因,当我尝试发送欢迎消息时,数据似乎没有到达客户机。 我在控制台中看到它正在运行并试图发送欢迎消息,但是FileZilla(我用来连接的FTP客户端)通常位于: === 编辑 欢迎信息非常基本:发送(“220欢迎使用FTP服务器”); 我试图只包含相关的代码,因为在这里