CURL प्रतिक्रिया शरीर को दबाती है


110

क्या प्रतिक्रिया शरीर के उत्पादन को दबाने के लिए CURL का निर्देश देना संभव है?

मेरे मामले में, प्रतिक्रिया निकाय एक HTML पृष्ठ है, जो CLI बफर को ओवरफ्लो करता है, जिससे संबंधित जानकारी को ढूंढना मुश्किल हो जाता है। मैं आउटपुट के अन्य हिस्सों जैसे HTTP प्रतिक्रिया कोड, हेडर, आदि - वास्तविक HTML को छोड़कर सब कुछ की जांच करना चाहता हूं ।

जवाबों:


117

आप -oस्विच और nullछद्म फ़ाइल का उपयोग कर सकते हैं :

यूनिक्स

curl -s -o /dev/null -v http://google.com

खिड़कियाँ

curl -s -o nul -v http://google.com

1
... यदि आप यूनिक्स पर हैं ;-) विंडोज के लिए आप nul का उपयोग करना चाह सकते हैं। यहाँ डॉक्स के लिए लिंक है, शायद बाल्टोस्टर को अगली बार पूछने से पहले पढ़ने का आग्रह है; ;-) curl.haxx.se/docs/manpage.html
20

3
आपका स्वागत है। लेकिन यह "nul" है, "null" उस नाम से एक फाइल बनाएगा
Marged

1
वास्तव में मैंने पोस्ट करने से पहले मैन पेज को पढ़ा था और कोशिश की थी, -s -o nulलेकिन मेरी विंडोज़ मशीन curl -s -o nul -v http://{internal-host}/{internal-uri}आउटपुट पेज के पूरे html पर - मैंने कोशिश की curl -s -o nul -v http://google.comऔर यह आउटपुट को उम्मीद के मुताबिक दबाती है, इसलिए मुझे समझ नहीं आ रहा है कि यह मेरी आंतरिक साइट के लिए काम क्यों नहीं करता है
बाल्टोस्टार

-oकेवल एक URL आउटपुट निर्दिष्ट करता है: यदि आपके पास कई यूआरएल हैं, तो यह केवल पहले को छोड़ देगा :(
साइमन बुकान

1
गैर-पोर्टेबल NULऔर पर निर्भर करता है /dev/null। उपयोग करना -sIXGETएक बेहतर विकल्प IMO है।
binki

45

यहां सभी कर्ल आउटपुट और हेडर को दबाने का एक तरीका है, फिर भी यदि वे होते हैं, तो त्रुटियों को दिखाने के विकल्प के साथ। क्रोन नौकरियों या स्वचालित परीक्षण के लिए उपयोगी।

यूनिक्स

सभी आउटपुट को दबाने के लिए:

curl --silent --output /dev/null http://example.com

उत्पादन को दबाने के लिए, लेकिन फिर भी यदि वे होते हैं, तो त्रुटियां दिखाएं:

curl --silent --output /dev/null --show-error --fail http://example.com

खिड़कियाँ

सभी आउटपुट को दबाने के लिए:

curl --silent --output nul http://example.com

उत्पादन को दबाने के लिए, लेकिन फिर भी यदि वे होते हैं, तो त्रुटियां दिखाएं:

curl --silent --output nul --show-error --fail http://example.com

पैरामीटर समझाया

--silentडाउनलोड-इन-प्रोग्रेस आँकड़े को दबा देता है (लेकिन फिर भी HTML आउटपुट दिखाएगा)
--output /dev/nullसफल आउटपुट को छुपाता है
--show-error, तब भी जब silentमोड इनेबल होता है,
--failतो त्रुटि उत्पन्न होगी यदि HTTP रिस्पांस केवल DNS / के बजाय एक त्रुटि कोड (404, 500 आदि) है। टीसीपी त्रुटियों।


अद्यतन: मुझे एहसास है कि मूल लेखक सब कुछ चुप कराने के बजाय अनुरोध के हेडर और प्रतिक्रिया कोड का निरीक्षण करना चाहता था । यह कैसे करना है पर विवरण के लिए samael का उत्तर देखें ।


2
गैर-पोर्टेबल NULऔर पर निर्भर करता है /dev/null। उपयोग करना -sIXGETएक बेहतर विकल्प IMO है।
binki

1
@Binki टिप्पणी के लिए धन्यवाद - वे वास्तव में अलग-अलग चीजें करते हैं। यह भी महसूस किया कि ओपी हेडर का निरीक्षण करना चाहता था जो मेरे समाधान में नहीं दिखा। मैंने अपना उत्तर अपडेट कर दिया है।
साइमन ईस्ट

1
मुझे लगता है कि उन्होंने ओपी के पद को फिर से प्राप्त करने का अनुमान लगाया, उन्होंने यह नहीं कहा कि वे केवल हेडर देखना चाहते थे। वे वास्तव में curl -vo/dev/null/ curl -voNUL… की तलाश में रहे होंगे और मुझे नहीं पता कि उस का एक पोर्टेबल संस्करण है, hrm; ;-)।
binki

--फेल के लिए एक छोटी कमांड है? मुझे लगता है कि -sSentent और --show- त्रुटि
Freedo

हाँ, वहाँ है curl -Ssfo /dev/null url:। लेकिन भविष्य के रखवाले के लिए अच्छा हो।
अमित नायडू

29

जब आप शीर्ष लेख दिखाना चाहते हैं, लेकिन प्रतिक्रिया निकाय को छिपाते हैं, तो आप उपयोग करना चाहेंगे:

curl -sIXGET http://somedomain.com/your/url

मैं curl -I http://somedomain.com/your/urlसिर्फ प्रतिक्रिया हेडर दिखाने के लिए उपयोग कर रहा हूँ । इसके साथ समस्या यह है कि यह उस HEADपद्धति का उपयोग करके अनुरोध करता है जो तब अच्छा नहीं होता जब आप एक एपीआई कॉल का परीक्षण करना चाहते हैं जो केवल एक GETअनुरोध का जवाब देता है । यह वही है जो इसके -X GETलिए है, यह अनुरोध को बदल देता है GET

तो, सारांश में:

-sआउटपुट से प्रगति सलाखों को छुपाता है (विशेष रूप से तब उपयोगी होता है जब किसी अन्य प्रोग्राम के लिए पाइपिंग)
-Iहेडर दिखाता है (लेकिन एक HEADअनुरोध
-XGETकरता है ) अनुरोध के लिए GETअनुरोध को धर्मान्तरित करता है

देखें: http://www.woolie.co.uk/article/curl-full-get-request-dropping-body/


2
यह वास्तव में जटिल है; curl -iबिल्कुल वैसा ही करता है।
बफोंटेन

4
नहीं, -iआउटपुट में HTTP-हैडर के साथ-साथ बॉडी भी शामिल है। कोशिश करो। curl -i http://google.comके रूप में ही नहीं हैcurl -IXGET http://google.com
samael

मेरे उद्देश्यों के लिए (और ओपी का) curl -I urlपर्याप्त है और इसका समान प्रभाव है। मुझे केवल यह जांचने की आवश्यकता है कि क्या url उत्तरदायी था। यह सवाल भी शरीर को दबाने के बारे में था, जो HEADअच्छी तरह से करता है।
अमित नायडू
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.