¿Por qué wget da un error cuando se ejecuta con sudo, pero funciona bien sin él?

¿Por qué wget da un error cuando se ejecuta con sudo, pero funciona bien sin él?

Probé el siguiente comando:

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

(Deesta publicación SO. Quiero comprobar mi conexión a Internet en bash).

Obtengo el siguiente resultado:

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 estar bien, sin embargo, al ejecutar cmd con sudo, recibo esto:

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’

Necesito esta línea en un script, al que llamo sudoy por eso siempre falla.

¿Alguien puede decirme el motivo de esto? ¿Cómo puedo solucionar eso?

Respuesta1

Tienes un proxy definido en tu entorno. El tuyo parece ser 127.0.0.1:3128.

Cuando ejecuta sudo, la variable de entorno del proxy no se pasa, por lo que no puede resolverla directamente google.com.

Puede ver qué proxy/proxies ha definido en sus variables de entorno con este comando:

env | grep proxy

Información adicional sobre Preguntar a Ubuntu

Nota:Si desea sudopasar la variable de entorno del proxy HTTP, intente esto:

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

También puede pasar todas las variables de entorno usando sudo -E:

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

Stack Overflow tiene otras opciones para mantener la variable de entorno al sudoejecutar.

información relacionada