cURL 在从 ftp 开始下载之前延迟很长时间

cURL 在从 ftp 开始下载之前延迟很长时间

我正在尝试编写一个脚本来下载文件、转换文件,然后对转换后的文件执行一个程序。

由于某种原因,curl需要超过 1 分钟才能开始文件传输。

命令:

curl ftp://tgftp.nws.noaa.gov/SL.us008001/ST.expr/DF.gr2/DC.ndfd/AR.conus/VP.001/ds.wx.bin -o test.out

我尝试过使用和禁用活动和 EPRT 模式--ftp-pasv--disable-eprt但似乎没有什么区别。

我已尝试过--verbose,它告诉我在哪里,但我仍然不知道为什么。

它快速登录并切换到正确的目录,但一旦它尝试下载文件,它就会在那里停留一分钟多。在延迟之前,这里是详细输出:

* FTP 0x1c2b268 state change from CWD to PASV
* Connect data stream passively
< 229 Entering Extended Passive Mode (|||64103|)

有趣的是它wget立即开始下载。我知道我可以使用它,但我想弄清楚为什么curl会出现问题。

提前致谢。

答案1

问题出在某种中间设备(防火墙、深度检测设备等)上,它导致 EPSV 命令(IPv6 和 IPv4 的被动模式)出现问题。强制 PASV(仅限 IPv4 的被动模式)解决了--disable-epsv该问题。如果服务器有 IPv6,并且只有 IPv6 时出现问题,也可能会出现类似的问题,但在这种情况下,服务器没有 AAAA DNS 记录。

相关内容