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