所以我现在有一个有趣的问题。 我正在尝试使用curl(CentOS上的7.15.5)从远程FTP服务器检索文件。 上个周末我们的客户改变了一些东西,因为它在星期五工作,现在不是。
我可以使用CLI客户端的FTP,并获得一个目录列表就好了,但我必须发出“被动”closures被动模式。 如果我不这样做,我会得到
421 Service not available, remote server has closed connection Passive mode refused. Turning off passive mode. No control connection for command: Transport endpoint is not connected ftp>
好的。 显然,被动模式需要被禁用。 我已经阅读了几次手册页,我明白我需要使用-P指定“活动”模式,但是从文档看来,这似乎会打开客户端(我的)机器上的数据端口stream到。 由于它位于防火墙之后,所以这不起作用。
这告诉我,我误解了一些东西,因为CLI客户端工作在主动模式。
帮助我serverfault-kenobi,你是我唯一的希望。
这个链接很好的解释了Active vs Passive。
我知道了!
关键是使用-P ,但是你必须使用“显而易见”的select,因为你不能打开另一个端口并连接。
引用文档:
– 使curlselect已经用于控制连接的相同的IP地址
所以curl命令
curl -u username:password -P - -o output.file ftp://whatever/source.file
-P -是重要的一部分。 本质上它使curl使用唯一可用的连接(命令连接)来传输数据。
欢呼!
对我来说 – 使它工作 – 我还必须添加--disable-eprt以及:
curl --disable-eprt -u username:password -P - ftp://whatever/source.file