![为什么使用 sudo 执行 wget 时会出现错误,但不使用 sudo 执行时却可以正常运行?](https://linux22.com/image/1467656/%E4%B8%BA%E4%BB%80%E4%B9%88%E4%BD%BF%E7%94%A8%20sudo%20%E6%89%A7%E8%A1%8C%20wget%20%E6%97%B6%E4%BC%9A%E5%87%BA%E7%8E%B0%E9%94%99%E8%AF%AF%EF%BC%8C%E4%BD%86%E4%B8%8D%E4%BD%BF%E7%94%A8%20sudo%20%E6%89%A7%E8%A1%8C%E6%97%B6%E5%8D%B4%E5%8F%AF%E4%BB%A5%E6%AD%A3%E5%B8%B8%E8%BF%90%E8%A1%8C%EF%BC%9F.png)
我尝试了以下命令:
$ wget -q --tries=10 --timeout=20 --spider http://google.com
(从这篇文章。我想在 bash 中检查我的互联网连接。)
我得到以下输出:
Spider mode enabled. Check if remote file exists.
--2015-09-28 09:55:50-- http://google.com/
Connecting to 127.0.0.1:3128... connected.
Proxy request sent, awaiting response... 302 Found
Location: http://www.google.de/?gfe_rd=cr&ei=k_IIVreaN-yH8Qfe1Yu4CA [following]
Spider mode enabled. Check if remote file exists.
--2015-09-28 09:55:50-- http://www.google.de/?gfe_rd=cr&ei=k_IIVreaN-yH8Qfe1Yu4CA
Connecting to 127.0.0.1:3128... connected.
Proxy request sent, awaiting response... 200 OK
Length: unspecified [text/html]
Remote file exists and could contain further links,
but recursion is disabled -- not retrieving.
似乎没问题,但是使用 运行 cmd 时sudo
,我收到此消息:
Spider mode enabled. Check if remote file exists.
--2015-09-28 09:55:27-- http://google.com/
Resolving google.com (google.com)... failed: Name or service not known.
wget: unable to resolve host address ‘google.com’
我需要脚本中的这一行,我用它调用它sudo
,但它总是失败。
有人能告诉我这是什么原因吗?我该如何解决这个问题?
答案1
您的环境中定义了一个代理。您的代理似乎是127.0.0.1:3128
。
当您运行 时sudo
,代理环境变量不会被传递,这就是您无法直接解析 的原因google.com
。
您可以使用以下命令查看在环境变量中定义的代理/代理:
env | grep proxy
笔记:如果您想sudo
传递 HTTP 代理环境变量,请尝试以下操作:
sudo http_proxy="$http_proxy" wget -q --tries=10 --timeout=20 --spider http://google.com
您还可以使用以下命令传递所有环境变量sudo -E
:
sudo -E wget -q --tries=10 --timeout=20 --spider http://google.com