Wget मौन है, लेकिन यह त्रुटि संदेश प्रदर्शित करता है


10

मैं एक फाइल डाउनलोड करना चाहता हूं wget , लेकिन सामान्य UNIX दर्शन के अनुसार, मैं इसे आउटपुट नहीं करना चाहता कुछ भी अगर डाउनलोड सफल होता है। हालाँकि, यदि डाउनलोड विफल रहता है, तो मुझे एक त्रुटि संदेश चाहिए।

-q विकल्प त्रुटि संदेश सहित सभी आउटपुट को दबा देता है। अगर मैं शामिल हूं -nv इसके बजाय विकल्प, Wget अभी भी प्रिंट करता है (stderr पर):

2012-05-03 16:17:05 URL:http://example.net/ [2966] -> "index.html" [1]

मैं उस आउटपुट को कैसे हटा सकता हूं, लेकिन फिर भी त्रुटि संदेश मिल सकता है?

जवाबों:


4

अगर आपको बेहतर जवाब नहीं मिल पाया तो हैक करें:

wget {url} 2>/tmp/err.log || cat /tmp/err.log; rm /tmp/err.log

(2 & gt; /tmp/err.log पुन: अप्रत्यक्ष रूप से tmp फ़ाइल में भेज देता है; यदि wget 0 [सफलता] लौटाता है, तो शॉर्ट सर्किट अन्यथा यह त्रुटि लॉग मानों को प्रिंट कर देगा)


+1 करने में मुझे याद आया कि सभी आउटपुट स्टडर्र तक जा रहे थे; मैंने अपने उत्तर को केवल रीडायरेक्ट करने के लिए / dev / null से हटा दिया है।
chepner

5
यह काम करता है, लेकिन यह है लंगड़ा error_log=$(wget -nv example.net 2>&1) || echo $error_log एक और अधिक सुंदर समाधान है, लेकिन अभी भी अनाड़ी है।
phihag

4

प्रयत्न curl बजाय:

curl -fsS $url -o $file

दीर्घ संस्करण:

curl --fail --silent --show-error $url --output $file

GNOME उपयोगकर्ता Gvfs आज़मा सकते हैं:

gvfs-cp $url $file

1
दुर्भाग्य से, कर्ल सभी डेबियन सिस्टम पर प्रीइंस्टॉल्ड नहीं है।
phihag

क्यों जोड़ रहा है --fail? यह HTTP त्रुटियों का इलाज करने के लिए समझ में नहीं आएगा क्योंकि कुछ आप stderr पर जाना चाहते हैं?
gilad mayani

ठीक है कि क्या संयोजन है --fail तथा --show-error कर देता है।
grawity

1

चूंकि वर्तमान में सभी wget आउटपुट stderr पर चला जाता है, ऐसा लगता है कि इस 'सुरुचिपूर्ण तरीके' को हल करने के लिए आपको wget स्रोत को पैच करना होगा।

wget स्रोत डिज़ाइन संदेशों के बीच वर्बोसिटी स्तर के अंतर को निर्धारित करता है, न कि त्रुटि और त्रुटि संदेश के बीच एक साधारण विभाजन के बजाय।

इस बारे में एक खुला बग है http://savannah.gnu.org/bugs/?33839 , और कुछ पुरानी चर्चा भी है। यहाँ एक सुझाव दिया गया पैच है http://www.mail-archive.com/wget%40sunsite.dk/msg03289.html और यहाँ इस बारे में Hrvoje Niksic का जवाब है http://www.mail-archive.com/wget%40sunsite.dk/msg03330.html

इसके अलावा, निश्चित रूप से फून के कम सुरुचिपूर्ण समाधान के लिए एक टिप्पणी में प्रस्तावित अच्छा समाधान है।


0

आप आउटपुट को पाइप भी कर सकते हैं grep और सफलता संदेश को फ़िल्टर करें।

यह काम करना चाहिए:

wget ... -nv 2>&1 | grep -Pv "^\d\d\d\d-\d\d-\d\d \d\d:\d\d:\d\d URL:.*\[\d+\] -> ".*" \[\d+\]$"
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.