অবশ্যই অন্য একটি উপায় আছে - তবে এটি যখন ইন্টারনেটের মাধ্যমে একটি অনুরোধ করা হয় তখন আসলে কী ঘটে তা বোঝার প্রয়োজন। আপনি যখন আপনার ওয়েব ব্রাউজারে কোনও পৃষ্ঠাতে যান, তখন এইচটিটিপি নামে একটি প্রোটোকল ব্যবহার করে ডেটা স্থানান্তরিত হয় (হ্যাঁ, আপনি http://
URL এর শুরুতে প্রায়শই দেখতে পাবেন ) see
এইচটিটিপি একটি পাঠ্য-ভিত্তিক প্রোটোকল। অনুরোধের বডি অনুসারে শিরোনাম পাঠিয়ে ক্লায়েন্ট এবং সার্ভারের মধ্যে তথ্য বিনিময় হয়। শিরোনামগুলির মধ্যে অনুরোধ এবং স্থানান্তরিত হওয়া তথ্য সম্পর্কে প্রচুর স্থিতির তথ্য থাকে। আপনার সমস্যাটি আপনাকে সহায়তা করতে আপনি যে শিরোনামটির প্রতি আগ্রহী হবেন তা আসলে কোনও শিরোনাম নয় - এটি হ'ল প্রথম লাইনের স্থানান্তরিত এবং এতে স্ট্যাটাস কোড নামক একটি নম্বর রয়েছে। এই সংখ্যাটি 3 ডিজিটের এবং স্থিতির তথ্য জানায়। যদি একটি অনুরোধ সফল হয়, ফলাফলটি সাধারণত 200 হয় (সর্বদা নয় - ব্যতিক্রমগুলি রয়েছে)।
একটি বিষয় অবশ্যই নিশ্চিত - আপনার অনুরোধ করা ফাইলটি যদি ওয়েব সার্ভারে উপস্থিত না থাকে তবে সার্ভারের 404 এর একটি স্থিতি কোড দিয়ে উত্তর দেওয়া উচিত This এটি সূচিত করে যে উত্সটি খুঁজে পাওয়া যায় নি। (কৌতূহলীদের জন্য, এখানে এইচটিটিপি স্থিতি কোড এবং তাদের অর্থগুলির একটি তালিকা রয়েছে))
ঠিক আছে, যথেষ্ট তত্ত্ব। আসুন দেখুন আমরা টার্মিনালে এটি কীভাবে করতে পারি। এইচটিটিপি ব্যবহার করে অনুরোধ আনার জন্য একটি দুর্দান্ত সরঞ্জাম যা আমাদের স্থিতি কোড পরীক্ষা করার ক্ষমতাও সরবরাহ করে তা হল সিউআরএল, যা উবুন্টু রেপোতে উপলব্ধ। আপনি এটি দিয়ে এটি ইনস্টল করতে পারেন:
sudo apt-get install curl
একবার এটি ইনস্টল হয়ে গেলে আপনি এটির মতো অনুরোধ করতে পারেন:
curl [website]
... এবং প্রদত্ত ইউআরএলটির সামগ্রীটি টার্মিনালে মুদ্রিত হবে। এটি সেই তথ্য যা আপনার ওয়েব ব্রাউজারটি সেই URL টি দেখার পরে দেখে। এটি কীভাবে আমাদের সহায়তা করে? ঠিক আছে, কমান্ডের জন্য পতাকাগুলি নিবিড়ভাবেcurl
দেখুন । আমরা যদি প্যারামিটারটি পাস করি তবে --head
সিআরএল অনুরোধ থেকে কেবল শিরোনামই ফিরিয়ে দেবে । এটি একটি URL দিয়ে চেষ্টা করুন it আপনি ফর্মের লাইনের একটি তালিকা পাবেন:
header-name: header-value
অবশ্যই লক্ষ করুন যে খুব প্রথম লাইনে এর মতো কিছুই দেখা যাচ্ছে না। আমরা আগে যে স্ট্যাটাস কোডের কথা বলেছিলাম তা মনে আছে? আপনি এটি প্রথম পংক্তিতে তিন অঙ্কের সংখ্যা হিসাবে লক্ষ্য করবেন। এখন আমাদের যা করা দরকার তা হ'ল পার্ল ব্যবহার করে এটি প্রথম লাইন থেকে বের করা - এবং আমরা পার্লের -e
পতাকা ব্যবহার করে টার্মিনালে এটি করতে পারি যা আসুন পার্ল কোডটি সরাসরি পার্ল ইন্টারপ্রেটারে প্রেরণ করি। --silent
এটি একটি অগ্রগতি বার প্রদর্শন করা থেকে দূরে রাখতে এবং আমাদের পার্ল স্ক্রিপ্টটি বিশৃঙ্খলা থেকে বাঁচানোর জন্য সিআরএল ( ) এ আমাদের একটি অতিরিক্ত পতাকাও যুক্ত করতে হবে।
আমাদের যা প্রয়োজন তা এখানে ... এটি শেল থেকে প্রচুর পালানোর প্রয়োজনের কারণে এটি বেশ জটিল:
পার্ল -e "\ $ s = \` কার্ল [ইউআরএল] - হেড - সাইলেন্ট \ `; \ $ এস = ~ এম / (\\ ডি {3}) /; প্রিন্ট \ $ 1"
এটি মূলত যা করছে তা হ'ল ইউআরএলটি সিআরএল নিয়ে আসা এবং এটি একটি পার্ল নিয়মিত প্রকাশের মাধ্যমে চালানো যা স্থিতি কোডটি বের করে এবং প্রিন্ট করে।
আপনার যা যা পরীক্ষা করা হচ্ছে তার ইউআরএল-এ এখন আপনাকে যা দেওয়ার দরকার তা এটি '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
কোনও হোস্টের কাছে পৌঁছনীয় কিনা তা নির্ধারণ করতে এবং বিলম্বিতা পরীক্ষা করতে 'আইসিএমপি' নামে একটি প্রোটোকল ব্যবহার করে।