Intenté el siguiente comando:
$ wget -q --tries=10 --timeout=20 --spider http://google.com
(De esta publicación SO . Quiero verificar mi conexión a Internet en bash).
Me sale 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 correcto, sin embargo, ejecutando el 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 lo tanto, siempre falla.
¿Alguien puede decirme la razón de esto? ¿Cómo puedo evitar eso?
wget
contra google.com no parece ser una buena manera de verificar que una conexión a Internet esté funcionando: por ejemplo, puede estar en una conexión que permita conexiones HTTP a Google pero prohíba las cosas que su script realmente quiere hacer. ; o Google podría prohibir el acceso de wget a su sitio. ¿Cuál es el problema real que tiene, para el cual cree quesudo wget blah
es una solución potencial?Respuestas:
Tiene un proxy definido en su entorno. La tuya parece ser
127.0.0.1:3128
.Cuando ejecuta
sudo
, la variable de entorno proxy no se pasa, por lo que no puede resolverla directamentegoogle.com
.Puede ver qué proxy / proxies ha definido en sus variables de entorno con este comando:
Información adicional sobre Ask Ubuntu
Nota: Si desea
sudo
pasar la variable de entorno proxy HTTP, intente esto:También puede pasar todas las variables de entorno utilizando
sudo -E
:Stack Overflow tiene otras opciones para mantener el entorno variable cuando
sudo
ing.fuente
sudo -E
para preservar las variables de entornosudo http_proxy=$http_proxy wget ...
sería mejor? Si usa eso en cualquier script, no tiene que cambiarlo si cambia el proxy.Defaults env_keep += "http_proxy ftp_proxy"
a/etc/sudoers
para que sudo conserve automáticamente esas variables env.