2012-10-05 12 views
22

मैं एक वेब सेवा http://localhost/test/testwebलिनक्स स्क्रिप्ट अप

पर उपलब्ध कराई है है मैं अगर वेब सेवा अगर वहाँ एक कर्ल पैरामीटर दिया कर्ल

के साथ है की जाँच करने के लिए एक स्क्रिप्ट लिखने के लिए चाहते हैं, 200 OK रिटर्न ठीक सही गलत ताकि मैं उपयोग कर सकते हैं यह linux स्क्रिप्ट

+0

कृपया प्रश्न में परिवर्तन और स्वीकार किए जाते हैं से, इस सवाल का जवाब न जोड़ें जवाब लोगों को पता चलेगा कि कौन सा समाधान काम करता है। –

+0

मुझे समझ में नहीं आता कि आपने मुझे चेतावनी क्यों दी है कि सवाल संपादित न करें? जहां तक ​​मुझे पता है मैंने अभी तक इसे संपादित नहीं किया है। –

+0

आपने प्रश्न के लिए अपना समाधान जोड़ा; मैंने आपके अपडेट को उलट दिया। –

उत्तर

44
curl -sL -w "%{http_code}\\n" "http://www.google.com/" -o /dev/null 
  • -s = मौन cURL के उत्पादन
  • में अगर-किसी और ब्लॉक है

    [~]$ curl -sL -w "%{http_code}\\n" "http://www.google.com/" -o /dev/null 
    200 
    

    मैं शायद \\n हटा अगर मैं करने के लिए किए गए:

  • -L = का पालन
  • -w = कस्टम उत्पादन प्रारूप
  • -o = पुनर्निर्देश HTML आउटपुट /dev/null

को उदाहरण पुनर्निर्देश आउटपुट कैप्चर करें।

+3

** + 1 ** - कमांड लाइन विकल्पों की कर्ल की संपूर्ण सूची का उत्कृष्ट उपयोग। एक जोड़ा '-I' हो सकता है ताकि जीईटी के बजाए एक हेड विधि का उपयोग किया जा सके। यह अभी भी सत्यापित करता है कि पृष्ठ जेनरेट किया जा सकता है, लेकिन HTML आउटपुट के शरीर को छोड़कर आपको बैंडविड्थ का थोड़ा सा बचाता है। (आप अभी भी बाकी शीर्षकों को थूकने से बचने के लिए '-o/dev/null'' करना चाहते हैं।) – ghoti

+0

यह भी ध्यान दें: '\\ n' (बच निकला बैकस्लैश) केवल तभी आवश्यक है जब आप बैश का उपयोग कर रहे हों खोल अंतःक्रियात्मक रूप से, लेकिन यदि आप इसे किसी स्क्रिप्ट में डालते हैं या आप tcsh का उपयोग करते हैं तो आपको इसके बजाय '\ n' का उपयोग करना चाहिए।यह एक उद्धरण मुद्दा है; कमांड लाइन दोनों गोले, इंटरैक्टिवली और स्क्रिप्ट्स में समान काम करती है यदि आप इसके बजाय सिंगल कोट्स का उपयोग करते हैं, à la: ''% {http_code} \ n'' शायद इसके बजाय उपयोग करने के लिए स्थिरता के लिए सबसे अच्छा है। – ghoti

+0

यह बहुत अच्छा है। मैंने आपके उत्तर को अपनी स्क्रिप्ट के साथ जोड़ दिया है जिसका प्रयोग जावा सेवा चलाने के लिए किया जाता है और जब तक यह ऊपर नहीं हो जाता है। मैंने अपना प्रश्न अपडेट किया है। धन्यवाद। –

0

कि 2>&1 पाइप stderr wget के माध्यम से हेडर की जाँच करेगा grep फिल्टर -O /dev/null stdout करने के लिए सिर्फ पेज

if [ "\`wget http://example.org/ -O /dev/null -S --quiet 2>&1 | grep '200 OK'\`" != "" ]; 
then 
    echo Hello; 
fi; 

मैं कर्ल नहीं पता की सामग्री फेंकता है, लेकिन अभी भी एक समाधान

0

मैं इसके लिए एक बेहतर जवाब की आवश्यकता है, इसलिए मैंने नीचे लिपि लिखी है।

नकली फ्रेज़ का उपयोग आईएसपी "सर्च असिस्ट" एडवेयर HTTP resposnes का पता लगाने के लिए किया जाता है।

#!/bin/bash 

fakePhrase="verizon" 
siteList=(
    'http://google.com' 
    'https://google.com' 
    'http://wikipedia.org' 
    'https://wikipedia.org' 
    'http://cantgettherefromhere' 
    'http://searchassist.verizon.com' 
) 

exitStatus=0 

function isUp { 
    http=`curl -sL -w "%{http_code}" "$1" -o temp_isUp` 
    fakeResponse=`cat temp_isUp | grep $fakePhrase` 
    if [ -n "$fakeResponse" ]; then 
    http=$fakePhrase 
    fi 
    case $http in 
    [2]*) 
    ;; 
    [3]*) 
    echo 'Redirect' 
    ;; 
    [4]*) 
    exitStatus=4 
    echo "$1 is DENIED with ${http}" 
    ;; 
    [5]*) 
    exitStatus=5 
    echo "$1 is ERROR with ${http}" 
    ;; 
    *) 
    exitStatus=6 
    echo "$1 is NO RESPONSE with ${http}" 
    ;; 
    esac 
} 

for var in "${siteList[@]}" 
do 
    isUp $var 
done 

if [ "$exitStatus" -eq "0" ]; then 
    echo 'All up' 
fi 

rm temp_isUp 
exit $exitStatus 
+2

प्राप्त करें ... या आप केवल Google DNS या OpenDNS पर स्विच कर सकते हैं और इससे निपटने की ज़रूरत नहीं है। –

0

उपयोग करें:

curl -o $CURL_OUTPUT -s -w %{http_code}\\n%{time_total}\\n $URL > $TMP_FILE 2>&1 
cat $TMP_FILE 
+0

हम TMP_FILE से आवश्यक शर्त grep कर सकते हैं –

1

एक ही रूप में @ बुरहान-खालिद कहा:

--connect-timeout 3 

--max-time 5 

test_command='curl -sL \ -w "%{http_code}\\n" \ "http://www.google.com:8080/" \ -o /dev/null \ --connect-timeout 3 \ --max-time 5' if [ $(test_command) == "200" ] ; then echo "OK" ; else echo "KO" ; fi