本文共 608 字,大约阅读时间需要 2 分钟。
问题背景:应用启动时去某机器上下载文件,但是其中某一台总是下载失败,但是手动是可以的
问题过程:首先,我们怀疑是vsftpd配置问题,比如主被动模式配置错误,发现ftp都是vsftpd的方式,没有用xinetd代理,而且主被动模式都是一致,那为什么会有的机器行,有的机器不行呢?添加jsp模拟下载,类似如下代码(使用的ftp类来自于commons-net-3.1.jar)
FTPFile[] files = ftpClient.listFiles(fileName); out.prinln(files.length);发现在files.length总是0,同时,抓包发现,list目录是可以返回文件的详细信息的,但是直接list文件却无法读取到;虽然给了成功响应Response: 150 Here comes the directory listing
后来查了一下vsftpd版本,正常可用机器上的vsftpd版本为vsftpd-2.0.7-4.25.1,问题机器上为vsftpd-2.0.7-4.29.1,于是卸载vsftpd,再安装低版本重试,问题解决。
其实问题根因没有来得及深入去追究,比如为什么在略高那么一点点的版本上就不能list出具体文件,看下载源码也没发现问题,希望看到本文的有缘人可以去探究一把
2017-11-7 补充,经过确认,是我司服务器本版本配套的vsftp版本问题
转载地址:http://lmcqb.baihongyu.com/