【问题标题】:curl returns error (6) occasionallycurl偶尔返回错误(6)
【发布时间】:2014-09-18 16:25:07
【问题描述】:

我有一个 bash 脚本,可以从 ftp 服务器下载一些文件。问题是有时 curl 会随机返回错误 6(无法解析主机)!我可以通过网络浏览器打开 ftp 没有任何问题。我还注意到大多数错误发生在第一次下载时。有什么想法吗?

我也想知道当这些错误发生时如何让 curl 重试下载

我使用的代码:

curl -m 60 --retry 10 --retry-delay 10 --ftp-method multicwd -C - ftp://some_address/some_file --output ./some_file

注意:我也试过没有--ftp-method multicwd的代码

操作系统:CentOS 6.5 64bit

【问题讨论】:

  • “大多数错误发生在第一次下载时。任何想法”可能是因为主机地址被放在缓存中的某个地方。 ftp 服务器是否在本地网络上?在 VPN 上?在互联网上?您是否尝试过在superuser.comserverfault.com 上提问?
  • @SylvainLeroux ftp 服务器不在本地网络或 VPN 上,它在互联网上 (ftp.ncep.noaa.gov)。而且我没有在任何提到的网站上问过我的问题。

标签: bash curl ftp


【解决方案1】:

while [ "$ret" != "0" ]; do curl [your options]; ret=$?; sleep 5; done

【讨论】:

  • 即使下载成功也会增加5秒的延迟。
  • 请随意将sleep 5 替换为[ "$ret" != "0" ] && sleep 5
【解决方案2】:

假设这些是服务器和/或 DNS 的过渡性问题,循环可能会有所帮助。对于很少使用的 (?) until 循环来说,这是一个特别好的案例:

until curl [your options]; do sleep 5; done

此外,如果不强制使用 curl,那么 wget 可能更适合“不可靠”的网络连接。来自男人

GNU Wget 是一个免费的实用程序,用于从 网络。它支持 HTTP、HTTPS 和 FTP 协议,以及 通过 HTTP 代理检索。

[...]

Wget 设计用于在缓慢或不稳定的网络连接上保持稳健性;如果下载失败由于 网络问题,它将继续重试,直到检索到整个文件。如果服务器支持 重新获取,它将指示服务器从中断处继续下载。

【讨论】:

  • 谢谢。我也使用了 wget,但它的行为与 curl 完全一样!我的意思是返回错误为“无法解析主机”
  • @gnome 对。由于这可能是名称解析的问题,wget 不会有太大帮助。
猜你喜欢
  • 2021-11-02
  • 2012-08-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-02
  • 1970-01-01
  • 2015-08-27
  • 2014-01-04
相关资源
最近更新 更多