我尝试了以下命令:
$ 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