निश्चित रूप से एक और तरीका है - लेकिन यह समझने की आवश्यकता है कि इंटरनेट पर अनुरोध किए जाने पर वास्तव में क्या होता है। जब आप अपने वेब ब्राउज़र में किसी पृष्ठ पर जाते हैं, तो HTTP (हाँ, यही कारण है कि आप अक्सर http://
URL की शुरुआत में देखेंगे ) नामक प्रोटोकॉल का उपयोग करके डेटा स्थानांतरित किया जाता है ।
HTTP एक टेक्स्ट-आधारित प्रोटोकॉल है। अनुरोध के मुख्य भाग द्वारा हेडर भेजकर ग्राहक और सर्वर के बीच सूचना का आदान-प्रदान किया जाता है। शीर्षलेखों में अनुरोध और स्थानांतरित की जा रही जानकारी के बारे में बहुत अधिक जानकारी है। जिस शीर्ष लेख में आपको अपनी समस्या में मदद करने में रुचि होगी वह वास्तव में शीर्ष लेख नहीं है - यह बहुत पहली पंक्ति में स्थानांतरित किया गया है और इसमें एक नंबर है जिसे स्थिति कोड कहा जाता है। यह संख्या 3 अंक है और स्थिति की जानकारी बताती है। यदि कोई अनुरोध सफल था, तो परिणाम आमतौर पर 200 होता है (हमेशा नहीं - अपवाद हैं)।
एक बात सुनिश्चित करने के लिए है - यदि आपके द्वारा अनुरोधित फ़ाइल वेब सर्वर पर मौजूद नहीं है, तो सर्वर को 404 की स्थिति कोड के साथ उत्तर देना चाहिए। यह इंगित करता है कि संसाधन नहीं मिला। (जिज्ञासु के लिए, यहां HTTP स्टेटस कोड और उनके अर्थ की सूची दी गई है।)
अच्छा, पर्याप्त सिद्धांत। आइए देखें कि हम टर्मिनल पर यह कैसे कर सकते हैं। HTTP का उपयोग करके अनुरोध प्राप्त करने के लिए एक महान उपकरण जो हमें स्टेटस कोड की जांच करने की क्षमता भी प्रदान करता है, वह है CURL, जो उबंटू रिपॉज में उपलब्ध है। आप इसे स्थापित कर सकते हैं:
sudo apt-get install curl
एक बार जब आप इसे स्थापित कर लेते हैं, तो आप इसे इस तरह से लागू कर सकते हैं:
curl [website]
... और दिए गए URL की सामग्री को टर्मिनल पर प्रिंट किया जाएगा। यह वह जानकारी है जो आपका वेब ब्राउज़र देखता है जब वह उस URL पर जाता है। यह हमें कैसे मदद करता है? खैर, कमान के लिए झंडेcurl
पर एक करीब से नज़र डालें । यदि हम पैरामीटर पास करते हैं --head
, तो cURL अनुरोध से केवल हेडर वापस करेगा । इसे एक URL के साथ आज़माएँ। आपको फॉर्म की लाइनों की एक सूची मिलेगी:
header-name: header-value
ध्यान दें, निश्चित रूप से, पहली पंक्ति बहुत कुछ नहीं दिखती है। उस स्थिति कोड को याद रखें जिसके बारे में हमने पहले बात की थी? आप इसे तीन-अंकीय संख्या के रूप में पहली पंक्ति में देखेंगे। अब हमें पर्ल के उपयोग से पहली पंक्ति से इसे निकालने की आवश्यकता है - और हम इसे पर्ल के -e
झंडे का उपयोग करके टर्मिनल में कर सकते हैं, जो हमें पर्ल कोड को सीधे पर्ल इंटरप्रिटर के पास भेजते हैं। हमें CURL ( --silent
) के लिए एक अतिरिक्त ध्वज जोड़ने की आवश्यकता होगी ताकि इसे एक प्रगति पट्टी प्रदर्शित करने और हमारी पेरो लिपि को गड़बड़ाने से बचाया जा सके।
यहाँ हम क्या जरूरत है ... यह शेल से बहुत से बचने की आवश्यकता के कारण काफी जटिल है:
perl -e "\ $ s = \ 'कर्ल [URL] --head --silent \`; \ $ s = ~ m / (\\ d {3}) /; प्रिंट \ $ 1 "
यह जो मूल रूप से कर रहा है वह URL को cURL के साथ ला रहा है और इसे एक पर्ल रेगुलर एक्सप्रेशन के माध्यम से चला रहा है जो स्टेटस कोड निकालता है और इसे प्रिंट करता है।
अब आपको केवल उस फ़ाइल के URL में डालना होगा जिसे आप चेक कर रहे हैं और उसकी तुलना '404' से कर रहे हैं। यदि आपको '404' मिलता है, तो आप मान सकते हैं कि फ़ाइल मौजूद नहीं है।
बेशक, टर्मिनल में हेरफेर करना बहुत मुश्किल हो सकता है, इसलिए आप एक छोटी स्क्रिप्ट लिख सकते हैं जो न केवल समझने में आसान बनाता है, बल्कि निष्पादित करने में भी आसान है:
#!/usr/bin/perl
# Get the URL
$url = $ARGV[0];
# Fetch the header
$header = `curl $url --head --silent`;
# Try to find the status code
$header =~ m/(\d{3})/;
# Return the result
exit(0) if $1 == 404;
exit(1);
बस एक फाइल में कॉपी और पेस्ट करें। इस उदाहरण के लिए, मैं फ़ाइल को कॉल करूँगा url_check
। फिर फ़ाइल को निष्पादन योग्य बनाएं:
chmod 755 url_check
फिर आप निम्नलिखित सरल कमांड के साथ किसी भी फ़ाइल की जांच कर सकते हैं:
./url_check [URL]
यदि सर्वर 404 और '1' अन्यथा लौटाता है तो रिटर्न वैल्यू '0' होगी। फिर आप इस कमांड को शेल में वैसे ही चेन कर सकते हैं जैसे आप किसी और कमांड में करते हैं।
ping
HTTP अनुरोधों को बिल्कुल नहीं भेजता है। बल्कि,ping
एक प्रोटोकॉल का उपयोग करता है जिसे 'ICMP' कहा जाता है, यह निर्धारित करने के लिए कि क्या एक मेजबान उपलब्ध है और विलंबता की जांच करता है।