Wget sudo ile çalıştırıldığında neden hata veriyor, ancak olmadan çalışıyor.


21

Aşağıdaki komutu denedim:

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

( Bu SO yayınından . İnternet bağlantımı bash olarak kontrol etmek istiyorum.)

Aşağıdaki çıktıyı alıyorum:

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.

Tamam görünüyor, ancak cmd'yi çalıştırarak şunu sudoalıyorum:

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

Bu çizgiye çağırdığım bir betikte ihtiyacım var sudove böylece her zaman başarısız oluyor.

Biri bana bunun nedenini söyleyebilir mi? Bu konuda nasıl çalışabilirim?


Üzgünüm, aslında AskUbuntu'da sorular oluşturmak istedim . Emin değilim On-Topic here ...
h0ch5tr4355 28:15

11
Burada konu var.
Deltik

4
Orada Konu Dışı olacaktı.
SnakeDoc

Bu bir XY problemi gibi görünüyor . wgetGoogle.com'a rastgele bir uygulama yürütmek, bir internet bağlantısının çalıştığını kontrol etmenin iyi bir yolu gibi görünmüyor: örneğin, Google’a HTTP bağlantılarına izin veren ancak komut dosyanızın gerçekten yapmak istediklerini yasaklayan bir bağlantıda olabilirsiniz. ; veya Google, sitelerine wget erişimini yasaklayabilir. Bunun sudo wget blaholası bir çözüm olduğunu düşündüğünüz asıl sorun nedir ?
David Richerby

Yanıtlar:


39

Ortamınızda tanımlanmış bir proxy'niz var. Seninki gibi görünüyor 127.0.0.1:3128.

Çalıştırdığınızda sudo, proxy ortam değişkeni geçilmez, bu yüzden doğrudan çözemezsiniz google.com.

Bu komutla ortamınızda hangi proxy / proxy'leri tanımladığınızı görebilirsiniz:

env | grep proxy

Ubuntu Ask hakkında ek bilgiler

Not:sudo HTTP proxy ortam değişkenini iletmek istiyorsanız , şunu deneyin:

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

Tüm ortam değişkenlerini aşağıdakileri kullanarak da iletebilirsiniz sudo -E:

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

Yığın Taşması ortamdayken ortam değişkenini korumak için başka seçeneklere sahiptir sudo.


5
Tamam, sadece cevabı gönderdiğiniz için değil, aynı zamanda açıklama için linkleri gönderdiğiniz için teşekkür ederiz. Benim için mükemmel çalıştı.
h0ch5tr4355 28:15

7
Ayrıca sudo -Eçevre değişkenlerini korumak için de kullanabilirsiniz
Squidly

4
sadece http_proxy'yi geçmek için sudo http_proxy=$http_proxy wget ...daha iyi olmaz mıydı ? Bunu herhangi bir komut dosyasında kullanırsanız, proxy değişirse değiştirmeniz gerekmez.
Josef

1
Güzel, @Josef. Cevabını önerinle değiştirdim.
Deltik

1
Sudo'nun bu env değişkenlerini otomatik olarak korumasını Defaults env_keep += "http_proxy ftp_proxy"sağlamak /etc/sudoersiçin de ekleyebilirsiniz .
Francois
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.