सूडो के साथ निष्पादित होने पर विकट एक त्रुटि क्यों देता है, लेकिन बिना ठीक काम करता है?


21

मैंने निम्नलिखित कमांड की कोशिश की:

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

( इस SO पोस्ट से । मैं अपने इंटरनेट कनेक्शन को bash में जांचना चाहता हूं।)

मुझे निम्नलिखित आउटपुट मिले:

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.

ठीक लगता है, लेकिन sudoमैं इसके साथ cmd चला रहा हूं:

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

मुझे एक स्क्रिप्ट में इस लाइन की आवश्यकता है, जिसे मैं कॉल करता हूं sudoऔर इसलिए यह हमेशा विफल रहता है।

क्या कोई मुझे इसका कारण बता सकता है? मैं उसके आसपास कैसे काम कर सकता हूं?


क्षमा करें, मैं वास्तव में AskUbuntu में प्रश्न बनाना चाहता था । यकीन नहीं तो ऑन-टॉपिक यहाँ ...
h0ch5tr4355

11
यह यहाँ विषय पर है।
डेल्टिक

4
यह ऑफ-टॉपिक होगा।
स्नेकडोक

यह एक XY समस्या की तरह दिखता हैwgetGoogle.com के खिलाफ एक बेतरतीब ढंग से निष्पादित करना यह जांचने का एक अच्छा तरीका नहीं लगता है कि एक इंटरनेट कनेक्शन काम कर रहा है: उदाहरण के लिए, आप एक ऐसे कनेक्शन पर हो सकते हैं जो Google से HTTP कनेक्शन की अनुमति देता है लेकिन उन चीजों को मना करता है जो आपकी स्क्रिप्ट वास्तव में करना चाहती है। ; या Google अपनी साइट पर पहुंच को रोक सकता है। आपके पास वास्तविक समस्या क्या है, जिसके लिए आपको लगता है कि sudo wget blahएक संभावित समाधान है?
डेविड रिचेर्बी

जवाबों:


39

आपके पास अपने वातावरण में एक प्रॉक्सी परिभाषित है। तुम्हारा होना प्रतीत होता है 127.0.0.1:3128

जब आप चलाते हैं sudo, तो प्रॉक्सी वातावरण चर पारित नहीं किया जाता है, यही कारण है कि आप सीधे हल नहीं कर सकते हैं google.com

आप देख सकते हैं कि इस कमांड के साथ आपने अपने परिवेश चर में कौन सी प्रॉक्सी / प्रॉक्सी निर्धारित की है:

env | grep proxy

पूछो Ubuntu पर अतिरिक्त जानकारी

नोट: यदि आप sudoHTTP प्रॉक्सी वातावरण चर को पास करना चाहते हैं , तो यह प्रयास करें:

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

आप सभी पर्यावरण चर का उपयोग करके भी पास कर सकते हैं sudo -E:

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

स्टैक ओवरफ्लो में sudoआईएनजी होने पर पर्यावरण चर रखने के लिए अन्य विकल्प हैं।


5
ठीक है, न केवल उत्तर पोस्ट करने के लिए बहुत बहुत धन्यवाद, बल्कि स्पष्टीकरण के लिए लिंक भी पोस्ट कर रहा हूं। मेरे लिए पूरी तरह से काम किया।
hchch5tr4355 8

7
आप sudo -Eपर्यावरण चर को संरक्षित करने के लिए भी उपयोग कर सकते हैं
स्क्वीडली

4
केवल http_proxy पास करने के लिए, sudo http_proxy=$http_proxy wget ...बेहतर नहीं होगा? यदि आप किसी भी स्क्रिप्ट में इसका उपयोग करते हैं तो आपको प्रॉक्सी को बदलने की आवश्यकता नहीं है।
जोसेफ

1
अच्छा लगा, @ जोसेफ। मैंने आपके सुझाव के साथ उत्तर को अपडेट कर दिया है।
डेल्टिक

1
आप अपने आप को उन env चर को संरक्षित करने के लिए sudo बनाने के Defaults env_keep += "http_proxy ftp_proxy"लिए भी जोड़ सकते हैं /etc/sudoers
फ्रेंकोइस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.