J'ai essayé la commande suivante:
$ wget -q --tries=10 --timeout=20 --spider http://google.com
(À partir de ce poste SO . Je veux vérifier ma connexion Internet dans bash.)
Je reçois la sortie suivante:
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.
Cela semble correct, quelle que soit l'exécution de la cmd sudo
, je reçois ceci:
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’
J'ai besoin de cette ligne dans un script, que j'appelle avec sudo
et donc elle échoue toujours.
Quelqu'un peut-il me dire la raison? Comment puis-je travailler autour de ça?
wget
google.com ne semble pas être un bon moyen de vérifier le bon fonctionnement d'une connexion Internet: vous pouvez par exemple utiliser une connexion autorisant les connexions HTTP avec Google, mais interdisant ce que votre script souhaite réellement faire. ; ou Google pourrait interdire à wget l’accès à leur site. Quel est le problème réel que vous avez, pour lequel vous pensez quesudo wget blah
c'est une solution potentielle?Réponses:
Vous avez un proxy défini dans votre environnement. Le vôtre semble être
127.0.0.1:3128
.Lorsque vous exécutez
sudo
, la variable d'environnement proxy n'est pas transmise, raison pour laquelle vous ne pouvez pas résoudre directementgoogle.com
.Vous pouvez voir quels proxy / proxies vous avez définis dans vos variables d'environnement avec cette commande:
Informations complémentaires sur Ask Ubuntu
Remarque: Si vous souhaitez
sudo
transmettre la variable d'environnement de proxy HTTP, essayez ceci:Vous pouvez également transmettre toutes les variables d'environnement à l'aide de
sudo -E
:Le débordement de pile a d'autres options pour garder la variable d'environnement quand
sudo
ing.la source
sudo -E
pour préserver les variables d'environnementsudo http_proxy=$http_proxy wget ...
mieux? Si vous utilisez cela dans un script, vous n'avez pas à le changer si le proxy change.Defaults env_keep += "http_proxy ftp_proxy"
à/etc/sudoers
pour que sudo conserve automatiquement ces variables env.