【问题标题】:python fptlib mlsd generator iteration errorpython fptlib mlsd生成器迭代错误
【发布时间】:2019-10-27 01:05:12
【问题描述】:

我在 ftp 目录中寻找 index.html 文件。根据docs 他们推荐mlsd。我正在尝试打印结果并查找文件,但它不起作用。我已经通过终端尝试过,它工作正常。

#!/usr/bin/python3

from ftplib import FTP
ftp = FTP("192.168.10.6")
ftp.login("username", 'password')
resp = ftp.mlsd()
print(resp)



for name, facts in resp:
    print(name)
#also tried for item in resp:   

错误

<generator object FTP.mlsd at 0x7fee1870cd00>
Traceback (most recent call last):
  File "./test.py", line 9, in <module>
    for name, facts in resp:
  File "/usr/lib/python3.6/ftplib.py", line 596, in mlsd
    self.retrlines(cmd, lines.append)
  File "/usr/lib/python3.6/ftplib.py", line 468, in retrlines
    with self.transfercmd(cmd) as conn, \
  File "/usr/lib/python3.6/ftplib.py", line 399, in transfercmd
    return self.ntransfercmd(cmd, rest)[0]
  File "/usr/lib/python3.6/ftplib.py", line 361, in ntransfercmd
    source_address=self.source_address)
  File "/usr/lib/python3.6/socket.py", line 724, in create_connection
    raise err
  File "/usr/lib/python3.6/socket.py", line 713, in create_connection
    sock.connect(sa)
TimeoutError: [Errno 110] Connection timed out

【问题讨论】:

    标签: python python-3.x ftp ftplib vsftpd


    【解决方案1】:

    设置后ftp.set_debuglevel(2) 并通过添加log_ftp_protocol=YES/etc/vsftpd.conf 中启用详细日志记录。我注意到客户端在pasv 命令之后没有发送任何命令。通过查看 ftp 协议,我注意到登录后 ftp 决定了他们将在其上进行通信的一些随机端口。从那我认为可能有防火墙问题。尽管我已经允许 20、21、22 和 960。所以我尝试通过 sudo ufw disable 完全禁用防火墙。并运行脚本,它完美地工作。让我很困惑的事情有时是脚本有效,而且大多只是超时。 从目前的情况来看,我假设每当出现超时问题时,它主要与防火墙或安全设置有关,例如当我们连接到 ec2 服务器等时。

    还启用调试级别和详细级别对我在黑暗中工作的其他方面有很大帮助。

    这是通信卡住或无法正常工作的日志。

    *get* '227 Entering Passive Mode (192,168,10,6,200,66).\n'
    *resp* '227 Entering Passive Mode (192,168,10,6,200,66).'
    

    【讨论】:

    • 您需要在防火墙上打开 FTP 被动模式端口范围的端口。可能您只打开了范围的一部分 - 这就是为什么它有时可以工作,有时不能。
    • 我不确定如何在 iptables 或 ufw 中打开被动端口范围。但这似乎是个好主意,因为禁用防火墙根本不可行。
    • 如果您需要帮助,请联系Super User。这不是编程问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-01
    • 2020-08-11
    • 2018-05-16
    • 2018-06-04
    • 1970-01-01
    • 2015-02-10
    相关资源
    最近更新 更多