wget报错Temporary failure in name resolution无法解析主机地址如何解决
问题根因
你遇到的问题由三个已知错误触发:
- 服务器DNS解析失败:无法正常解析AWS S3存储桶的公网域名,属于服务器网络配置问题
- 下载链接过期:你拿到的链接是AWS签名临时链接,
X-Amz-Expires=180参数明确说明链接有效期只有3分钟,复制到服务器执行时大概率已经失效 - 文件名自动截断:带签名的URL总长度超过wget默认支持的文件名长度,自动截断后就算下载成功也会得到名称异常的文件,且你原命令中
--progres=dot参数拼写错误,少了末尾的s
分步解决方案
1. 修复DNS解析问题
- 先测试域名连通性:执行
ping ni****.s3.amazonaws.com,把占位符替换为你日志里的完整S3域名 - 如果ping不通,替换公共DNS:
- 编辑DNS配置文件:
sudo vim /etc/resolv.conf - 写入以下两行配置覆盖原有nameserver:
nameserver 8.8.8.8 nameserver 1.1.1.1 - 保存后验证解析:
nslookup ni****.s3.amazonaws.com,能正常返回IP地址即修复完成
- 编辑DNS配置文件:
- 如果仍然解析失败,说明你的服务器网络屏蔽了AWS S3公网访问,要么更换有公网访问权限的服务器,要么在wget参数里添加代理配置:
-e use_proxy=yes -e http_proxy=http://你的代理地址:端口 -e https_proxy=http://你的代理地址:端口
2. 修复命令参数与链接过期问题
- 本地浏览器点击下载按钮,刚弹出下载任务的瞬间复制完整下载链接,必须在3分钟内将链接粘贴到服务器执行,避免签名过期
- 给wget添加
-O参数手动指定保存的文件名,避免自动截断URL,修复后的命令格式如下:sudo wget -v --report-speed=bits -o log --progress=dot --continue --timestamping -O 你要保存的数据集文件名.tar.gz "你刚复制的完整带签名下载链接"
3. 实现断开SSH会话后仍保持下载
不需要安装VNC,用nohup或者tmux即可实现后台常驻下载:
- 简单方案用nohup:直接在命令开头加
nohup、末尾加&即可
执行后直接关闭SSH会话也不会中断下载,随时可以用nohup sudo wget -v --report-speed=bits -o log --progress=dot --continue --timestamping -O 数据集文件名.tar.gz "下载链接" &cat log查看进度,ps aux | grep wget查看进程状态 - 更稳定方案用tmux:先执行
tmux new -s download创建专属会话,在会话内执行下载命令,按Ctrl+B再按D即可退出会话,下次要查看进度执行tmux a -t download即可,断网也不会中断任务
备用方案
如果wget执行仍然失败,把浏览器开发者工具复制的curl命令加上-C -参数支持断点续传,再套nohup后台运行即可:
nohup 你复制的完整curl命令 -C - -o 保存的数据集文件名 &
内容的提问来源于stack exchange,提问作者Zabir Al Nazi Nabil
相关产品推荐
相关产品推荐

