为什么使用 sudo 执行 wget 时会出现错误,但不使用 sudo 执行时却可以正常运行?

为什么使用 sudo 执行 wget 时会出现错误,但不使用 sudo 执行时却可以正常运行?

我尝试了以下命令:

$ 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

有关 Ask Ubuntu 的更多信息

笔记:如果您想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

Stack Overflow 还有其他选项可用于在 ing 时保留环境变量sudo

相关内容