Ich habe den folgenden Befehl ausprobiert:
$ wget -q --tries=10 --timeout=20 --spider http://google.com
(Von diesem SO Post . Ich möchte meine Internetverbindung in Bash überprüfen.)
Ich erhalte folgende Ausgabe:
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.
Scheint OK zu sein, aber wenn sudo
ich den Befehl mit ausführe , erhalte ich Folgendes:
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’
Ich brauche diese Zeile in einem Skript, mit dem ich aufrufe sudo
und damit es immer fehlschlägt.
Kann mir jemand den Grund dafür nennen? Wie kann ich das umgehen?
wget
bei google.com scheint keine gute Methode zu sein, um zu überprüfen, ob eine Internetverbindung funktioniert. Sie verfügen beispielsweise möglicherweise über eine Verbindung, die HTTP-Verbindungen zu Google zulässt, die jedoch die Aufgaben Ihres Skripts verbietet ; oder Google verbietet möglicherweise den wget-Zugriff auf ihre Website. Was ist das eigentliche Problem, für das Siesudo wget blah
eine mögliche Lösung sehen?Antworten:
Sie haben einen Proxy in Ihrer Umgebung definiert. Dein scheint zu sein
127.0.0.1:3128
.Bei der Ausführung
sudo
wird die Proxy-Umgebungsvariable nicht übergeben, weshalb Sie sie nicht direkt auflösen könnengoogle.com
.Mit diesem Befehl können Sie sehen, welche Proxys Sie in Ihren Umgebungsvariablen definiert haben:
Weitere Informationen zu Ask Ubuntu
Hinweis: Wenn Sie
sudo
die HTTP-Proxy-Umgebungsvariable übergeben möchten , versuchen Sie Folgendes:Sie können auch alle Umgebungsvariablen übergeben, indem Sie Folgendes verwenden
sudo -E
:Der Stapelüberlauf verfügt über andere Optionen, um die Umgebungsvariable beim
sudo
Speichern beizubehalten.quelle
sudo -E
, um Umgebungsvariablensudo http_proxy=$http_proxy wget ...
besser, nur den http_proxy zu übergeben? Wenn Sie das in einem Skript verwenden, müssen Sie es nicht ändern, wenn sich der Proxy ändert.Defaults env_keep += "http_proxy ftp_proxy"
,/etc/sudoers
um sudo zu veranlassen, diese Umgebungsvariablen automatisch beizubehalten.