Я попробовал следующую команду:
$ 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
переменная среды proxy не передается, поэтому вы не можете напрямую разрешить 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 есть и другие варианты сохранения переменной среды при sudo
запуске.