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 sudo
y 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 sudo
pasar 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 sudo
ejecutar.