Warum gibt wget einen Fehler aus, wenn es mit sudo ausgeführt wird, funktioniert aber ohne einwandfrei?

Warum gibt wget einen Fehler aus, wenn es mit sudo ausgeführt wird, funktioniert aber ohne einwandfrei?

Ich habe den folgenden Befehl ausprobiert:

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

(Ausdieser SO-Beitrag. Ich möchte meine Internetverbindung in Bash überprüfen.)

Ich bekomme 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 in Ordnung zu sein. Wenn ich den Befehl jedoch mit ausführe sudo, 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, welches ich aufrufe sudound daher schlägt es immer fehl.

Kann mir jemand den Grund dafür nennen? Wie kann ich das Problem umgehen?

Antwort1

In Ihrer Umgebung ist ein Proxy definiert. Ihr Proxy scheint zu sein 127.0.0.1:3128.

Beim Ausführen sudowird die Proxy-Umgebungsvariable nicht übergeben, weshalb Sie nicht direkt auflösen können google.com.

Mit diesem Befehl können Sie sehen, welchen Proxy/welche Proxys Sie in Ihren Umgebungsvariablen definiert haben:

env | grep proxy

Weitere Informationen zu Ask Ubuntu

Notiz:Wenn Sie sudodie Umgebungsvariable des HTTP-Proxys übergeben möchten, versuchen Sie Folgendes:

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

Sie können alle Umgebungsvariablen auch wie folgt übergeben sudo -E:

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

Stack Overflow bietet andere Optionen zum Beibehalten der Umgebungsvariable beim sudoing.

verwandte Informationen