Por que o wget dá um erro quando executado com o sudo, mas funciona bem sem?

21

Eu tentei o seguinte comando:

$ wget -q --tries=10 --timeout=20 --spider http://google.com

(De esta postagem SO . Quero verificar minha conexão com a Internet no bash.)

Eu recebo a seguinte saída:

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.

Parece OK, no entanto, executando o cmd com sudo , recebo isto:

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’

Eu preciso desta linha em um script, que eu chamo com sudo e por isso sempre falha.

Alguém pode me dizer o motivo disso? Como posso trabalhar com isso?

    
por h0ch5tr4355 28.09.2015 / 10:04

1 resposta

39

Você tem um proxy definido em seu ambiente. Seu parece ser 127.0.0.1:3128 .

Quando você executa sudo , a variável de ambiente do proxy não é passada, e é por isso que você não pode resolver diretamente google.com .

Você pode ver quais proxies / proxies você definiu em suas variáveis de ambiente com este comando:

env | grep proxy
Informações adicionais sobre o Ask Ubuntu

Nota: Se você quiser que sudo passe a variável de ambiente do proxy HTTP, tente isto:

sudo http_proxy="$http_proxy" wget -q --tries=10 --timeout=20 --spider http://google.com

Você também pode passar todas as variáveis de ambiente usando sudo -E :

sudo -E wget -q --tries=10 --timeout=20 --spider http://google.com

O Stack Overflow tem outras opções para manter a variável de ambiente quando sudo ing.

    
por 28.09.2015 / 10:30

Tags