लिनक्स curl कमांड हैंडबुक

अवलोकन

आधुनिक सर्वर प्रशासन, डेवऑप्स वर्कफ़्लो और बैकएंड डेवलपमेंट में curl सबसे विश्वसनीय और अनिवार्य CLI नेटवर्किंग टूल्स में से एक है। इंटरनेट या इंट्रानेट पर URL के ज़रिए डेटा ट्रांसफर करने के लिए इसका व्यापक उपयोग होता है। इस विस्तृत ट्यूटोरियल में हम सामान्य वेब रिक्वेस्ट्स भेजने से लेकर जटिल REST API कॉल्स, रिस्पॉन्स हेडर विश्लेषण और नेटवर्क रुकावटों के बाद फ़ाइल डाउनलोड रेज़्यूमे करने जैसे वास्तविक व्यावहारिक परिदृश्यों को स्टेप-बाय-स्टेप एक्सप्लोर करेंगे।

1. सिस्टम सेटअप और बेसिक GET रिक्वेस्ट की पड़ताल

प्रैक्टिकल लैब शुरू करने से पहले सिस्टम की रिपॉजिटरी लिस्ट को रिफ्रेश करें और curl यूटिलिटी इंस्टॉल करें।

curl पैकेज अपडेट और इंस्टॉलेशन कमांड

मूल रूप से curl क्लाइंट-सर्वर आर्किटेक्चर में विभिन्न नेटवर्क प्रोटोकॉल के ज़रिए डेटा का आदान-प्रदान करता है।
जब हम बिना किसी अतिरिक्त फ्लैग के केवल एक वेब एड्रेस पास करते हैं, तो यह डिफ़ॉल्ट रूप से एक सामान्य HTTP GET रिक्वेस्ट ट्रिगर करता है और सर्वर से मिले पूरे रिस्पॉन्स बॉडी को सीधे कंसोल पर डंप कर देता है।
⚙️ [महत्वपूर्ण कमांड फ्लैग्स की सूची]

-s : साइलेंट मोड सक्रिय करता है; प्रोग्रेस मीटर, स्पीड रिपोर्ट और एरर मैसेज पूरी तरह छिप जाते हैं।
-i : रिस्पॉन्स पेलोड के साथ-साथ सर्वर द्वारा भेजे गए HTTP हेडर भी आउटपुट में शामिल करता है।
-I : केवल सर्वर के HTTP हेडर मेटाडेटा को फ़ेच करता है और बॉडी डेटा को अनदेखा कर देता है।
-X : मैन्युअल रूप से विशिष्ट HTTP मेथड (जैसे GET, POST, PUT, DELETE) निर्धारित करने के लिए उपयोग किया जाता है।
-d : ख़ास तौर पर POST या PUT रिक्वेस्ट्स के साथ सर्वर को पेलोड/बॉडी डेटा भेजने का काम करता है।
-H : रिक्वेस्ट पैकेट में कस्टम HTTP हेडर्स (जैसे ऑथेंटिकेशन टोकन या कंटेंट-टाइप) जोड़ने की अनुमति देता है।
-o : रिमोट सर्वर से प्राप्त डेटा को अपने पसंदीदा कस्टम फ़ाइल नाम के साथ लोकल डिस्क पर स्टोर करता है।
-O : रिमोट यूआरएल में मौजूद वास्तविक फ़ाइल नाम का उपयोग करके सीधे फ़ाइल सेव करता है।
-C - : टूटे हुए या अधूरे डाउनलोड को पहले से मौजूद बाइट्स की जांच करके स्वतः आगे बढ़ाता है (Resume)।
-L : यदि सर्वर किसी अन्य एड्रेस पर 3xx रीडायरेक्ट रिस्पॉन्स भेजता है, तो यह ऑटोमैटिक अंतिम डेस्टिनेशन तक ट्रैफ़िक को फ़ॉलो करता है।

सामान्य GET रिक्वेस्ट का टर्मिनल आउटपुट

स्क्रिप्टिंग के दौरान अतिरिक्त प्रोग्रेस बार और ट्रांसफर स्टेटिस्टिक्स कंसोल को अव्यवस्थित कर सकते हैं; ऐसे में -s विकल्प इन सभी को म्यूट करके केवल वास्तविक डेटा लौटाता है।
यह साइलेंट बिहेवियर बैश ऑटोमेशन और पाइपलाइन (|) आधारित डेटा प्रोसेसिंग को बेहद साफ़ और एरर-फ्री बनाता है।

साइलेंट मोड में स्वच्छ IP रिस्पॉन्स प्राप्त करना

2. सर्वर स्टेटस कोड और HTTP हेडर्स का विश्लेषण

सर्वर के कॉन्फ़िगरेशन, कैशिंग व्यवहार या रिटर्न स्टेटस (उदा. HTTP/2 200 OK) की त्वरित जांच के लिए -I फ्लैग का उपयोग करें, जिससे बिना पूरी फ़ाइल डाउनलोड किए केवल हेडर्स प्राप्त होते हैं।
यह तरीका बैंडविड्थ की भारी बचत करता है और बड़े वेब पेजों या एसेट्स की बुनियादी उपलब्धता तुरंत परखने का सबसे कुशल जरिया है।

केवल HTTP रिस्पॉन्स हेडर का निरीक्षण

यदि आप एपीआई एंडपॉइंट्स डिबग कर रहे हैं और आपको पेलोड डेटा के साथ-साथ यह भी देखना है कि सर्वर कौन-से कुकीज़ या सुरक्षा हेडर भेज रहा है, तो -i फ्लैग का इस्तेमाल करें।
यह एक ही व्यू में हेडर और बॉडी दोनों को एक साथ प्रदर्शित करता है, जिससे डीबगिंग प्रक्रिया बेहद आसान हो जाती है।

हेडर और रिस्पॉन्स बॉडी का एक साथ प्रदर्शन

स्वचालित हेल्थ चेक या मॉनिटरिंग स्क्रिप्ट लिखते समय, बॉडी डेटा को -o /dev/null में रीroute करें, साइलेंट फ्लैग -s लगाएं, और -w पैरामीटर की मदद से केवल संख्यात्मक स्टेटस कोड फ़िल्टर करें।
यह रणनीति CI/CD पाइपलाइन्स और सिस्टम अलर्ट्स में कंडीशनल ब्रांचिंग लागू करने के लिए उद्योग जगत का एक मानक दृष्टिकोण है।

कस्टम फॉर्मेटिंग के जरिए केवल स्टेटस कोड निकालना

3. JSON पेलोड और टोकन ऑथेंटिकेशन के साथ REST API का परीक्षण

टर्मिनल के भीतर संरचित JSON डेटा को स्पष्ट रूप से फ़ॉर्मेट और पार्स करने के लिए सबसे पहले लाइटवेट JSON प्रोसेसर jq को सिस्टम में जोड़ें।

jq JSON पार्सर पैकेज की स्थापना

-X POST के ज़रिए मेथड सेट करें, -H के साथ यह बताएं कि भेजा जाने वाला डेटा application/json है, और -d फ्लैग में JSON स्ट्रिंग पास करें।
इसके बाद प्राप्त परिणाम को पाइप (|) के माध्यम से jq में भेजकर यह सत्यापित करें कि सर्वर ने आपका भेजा हुआ डेटा सही ढंग से स्वीकार किया है या नहीं।

कस्टम JSON बॉडी के साथ POST रिक्वेस्ट और jq पार्सिंग

सुरक्षित एंडपॉइंट्स के साथ इंटरैक्ट करते समय टोकन-आधारित सुरक्षा सत्यापन (जैसे JWT या OAuth) आवश्यक होता है; इसे हम Authorization: Bearer <token> हेडर के जरिए पास करते हैं।
इस तकनीक से यह आसानी से वैलिडेट किया जा सकता है कि क्रेडेंशियल्स सही फ़ॉर्मेट में सर्वर तक पहुंच रहे हैं।

ऑथेंटिकेशन बियरर टोकन के साथ सुरक्षित हेडर जांच

4. सुरक्षित फ़ाइल डाउनलोड और डाउनलोड रेज़्यूमे (Resume) प्रबंधन

फ़ाइल ट्रांसफर प्रयोगों को व्यवस्थित रखने के लिए एक समर्पित डायरेक्टरी बनाएं और उसमें स्विच करें।

अभ्यास के लिए नया डायरेक्टरी तैयार करना

बाइनरी डेटा डाउनलोड करते समय डिफ़ॉल्ट व्यवहार से स्क्रीन पर अपठनीय कैरेक्टर्स आ सकते हैं; इससे बचने के लिए -o विकल्प से एक स्पष्ट फ़ाइल नाम देकर डेटा को सुरक्षित सेव करें।
इससे टर्मिनल का आउटपुट ख़राब नहीं होता और फ़ाइल तय नाम के साथ डिस्क पर राइट हो जाती है।

कस्टम फ़ाइल नाम के साथ बाइनरी डेटा सुरक्षित सहेजना

धीमे या अस्थिर नेटवर्क पर बड़ी फ़ाइलें डाउनलोड करते समय कनेक्शन टूटना एक आम समस्या है; -C - फ्लैग मौजूदा फ़ाइल साइज़ का स्वतः पता लगाकर उसी पॉइंट से डाउनलोड फिर से शुरू करता है।
साथ ही -O फ्लैग रिमोट सर्वर के ओरिजिनल फ़ाइल नाम को बनाए रखता है, जिससे डेटा दोबारा शुरू से डाउनलोड करने का समय बचता है।

अधूरे डाउनलोड को फिर से जारी (Resume) करने की प्रक्रिया

डाउनलोड पूरा होने पर ls -lh चलाकर फ़ाइल के आकार और मेटाडेटा की पुष्टि करें ताकि यह सुनिश्चित हो सके कि ट्रांसफर बिना किसी डेटा करप्शन के पूर्ण हुआ है।

डाउनलोड की गई फ़ाइल के आकार और विवरण की पुष्टि

इस गाइड में हमने लिनक्स वातावरण में curl के बुनियादी नेटवर्क ऑपरेशन्स, शक्तिशाली REST API टेस्टिंग तकनीकों और एडवांस्ड फ़ाइल ट्रांसफर विकल्पों को विस्तार से समझा।
इन आवश्यक कमांड्स और विकल्पों को अपने रोज़मर्रा के डेवलपमेंट और ऑटोमेशन वर्कफ़्लो में लागू करके अपनी कमांड-लाइन दक्षता को एक नए स्तर पर ले जाएं।