7. Listings for Machine Processing (MLST and MLSD)
The MLST and MLSD commands are intended to standardize the file and
directory information returned by the server-FTP process. These
commands differ from the LIST command in that the format of the
replies is strictly defined although extensible.
这是意料之中的。FTPFileListProtocol不能理解每一个FTP输出,因为,好吧,有些是古怪的。如docstring中所述:
如果你需要一个古怪的FTP服务器不同的邪恶,你可以 重写C{fileLinePattern}或C{parseDirectoryLine()}。在
在本例中,这可能是一个bug:也许您可以改进fileLinePattern,使它理解带有空格的文件名。如果是这样的话,欢迎在Twisted tracker中打开一个bug。在
首先,如果您在检索到的FTP列表上执行自动任务,那么您可能应该查看},如{a1}所述:
NLST
,而不是{
^{pr2}$LIST
的Twisted documentation表示:这让我怀疑;我不喜欢“应付”的解决方案。
LIST
用于人类消费,而不是机器加工。在如果目标服务器支持它们,那么您应该选择},如{a3}中所定义:
MLST
和{但是,这些更新的命令可能在目标服务器上不可用,我在Twisted中看不到它们。因此
NLST
可能是您的最佳选择。在关于你的问题,有三个可能的原因:
NLST
/LIST
,但是如果向这些命令提供参数,则某些服务器的反应会有所不同)你可以排除(2)和(3)并通过查看电线上发送的内容来证明原因是(1)。如果这个选项作为Twisted API或纯FTPD服务器日志配置的一部分不可用,那么您可能需要打开一个网络嗅探器,如tcpdump、snoop或WireShark(假设您在您的环境中允许这样做)。注意,您不仅需要跟踪控制连接(端口21),而且还需要跟踪数据连接(因为它携带
LIST
/NLST
命令的结果)。WireShark很不错,因为它将为您执行协议级分析。在祝你好运。在
相关问题 更多 >
编程相关推荐