2013-08-15 4 views
5

मैं एक यूआरएल को एक कर्ल जीईटी अनुरोध जारी करना चाहता हूं और रिटर्न HTTP कोड पर आधारित यह तय करता हूं कि लौटाए गए HTTP डेटा के साथ कुछ करना है या नहीं।कर्ल शेल स्क्रिप्ट में टाइमआउट/त्रुटियों को कैसे पकड़ें?

उदाहरण के लिए, यदि curl के माध्यम से किसी निश्चित यूआरएल अनुरोध के लिए HTTP कोड मान्य है (समय समाप्त नहीं हुआ है या त्रुटि नहीं है), तो मेरे सिस्टम में कहीं से अनुरोध से लौटाए गए डेटा को रखें।

मैं वास्तव में लौटाए गए HTTP कोड (या टाइमआउट) को कैसे पकड़ सकता हूं और उस पर निर्णय ले सकता हूं?

+0

[यह उत्तर] (http://stackoverflow.com/questions/2924422/how-do-i-determine-if-a-web-page-exists-with-shell-scripting) निकटता से संबंधित है ... – user000001

उत्तर

21

script.sh http://www.google.com/ के रूप में निम्न निष्पादित करें।
-D - फाइल करने के लिए लिखने प्रतिक्रिया
-s - - चुप
-w - डंप हेडर
-o दायर करने के लिए निर्दिष्ट चर

#!/bin/bash 

RESPONSE=response.txt 
HEADERS=headers.txt 

status=$(curl -s -w %{http_code} $1 -o $RESPONSE) 

# or 
#curl -s -D $HEADERS $1 -o $RESPONSE 
#status=$(cat $HEADERS | head -n 1 | awk '{print $2}') 

echo $status 

उपयोग $status और आगे की प्रक्रिया के लिए $RESPONSE के प्रदर्शन मूल्य।

+0

बहुत बहुत धन्यवाद। यह काम कर रहा है! सीएलआई विकल्पों की व्याख्या सहित – Ron

+5

+1। वे आदमी फ़ाइल में हैं, लेकिन यह अच्छा है कि पोस्टर के हिस्से पर केवल थोड़ी सी मात्रा के साथ उस अतिरिक्त स्तर के अमूर्तता को हटा दिया जाए। मेरी इच्छा है कि अधिक लोग ऐसा करेंगे। – L0j1k

+0

क्या% साइन विंडोज विशिष्ट है? –

संबंधित मुद्दे