कर्ल एक पैकेज है जिसमें दूरस्थ सर्वरों के बीच डेटा स्थानांतरित करने के लिए विभिन्न उपकरण होते हैं। यह एफ़टीपी, विंडोज शेयर, मेल सर्वर और निश्चित रूप से HTTP का उपयोग करने वाले वेब सर्वर का समर्थन करता है।
Linux शेल से फ़ाइल डाउनलोड करना आमतौर पर cURL . का उपयोग करके पूरा किया जाता है ऐसा आदेश:
curl https://example.org/file.zip --output file.zip
यह GET पद्धति का उपयोग करके फ़ाइल के लिए अनुरोध करता है और बस इसे डाउनलोड करता है।
यह आलेख विस्तार से बताएगा कि फॉर्म डेटा सहित POST अनुरोध करने के लिए कर्ल का उपयोग कैसे करें। यह उपयोगी हो सकता है यदि सर्वर को फ़ाइल डाउनलोड करने के लिए क्रेडेंशियल की आवश्यकता होती है, या यदि आप डेटाबेस में भंडारण के लिए वेब फॉर्म में डेटा सबमिट करने के लिए एक स्वचालित स्क्रिप्ट बना रहे हैं।
यह REST API के साथ उपयोग के लिए फ़ाइल से XML या JSON डेटा सबमिट करने पर भी स्पर्श करेगा।
CURL का उपयोग करके URL एन्कोडेड फ़ील्ड पोस्ट करना
हमारे उदाहरणों के लिए, हम निम्नलिखित प्रपत्र डेटा सबमिट करेंगे:
फ़ील्ड का नाम | <थ>मान|
---|---|
फ़ील्ड1 | मान1 |
फ़ील्ड2 | मान2 |
डेटा यूआरएल पर सबमिट किया जाएगा https://example.org/submit.php . पते example.org . पर वास्तव में मौजूद नहीं है, यह सिर्फ एक वेब डोमेन है जिसे हम उदाहरण के लिए सुरक्षित रूप से उपयोग कर सकते हैं। सबमिट करें.php फ़ॉर्म सबमिट स्क्रिप्ट के लिए एक उदाहरण नाम भी है और किसी विशिष्ट चीज़ का संदर्भ नहीं देता है।
फ़ॉर्म डेटा को POST अनुरोध में एक स्ट्रिंग के रूप में भेजा जा सकता है, जिसमें प्रत्येक फ़ॉर्म फ़ील्ड और उसका मान name=value द्वारा परिभाषित किया गया है , और उन्हें & . से अलग करना –डेटा . का उपयोग करना विकल्प:
curl --data "field1=value1&field2=value2" https://example.org/submit.php
हालांकि, यह आदर्श नहीं है, क्योंकि इसके लिए यूआरएल एन्कोडेड . की आवश्यकता होती है डेटा - यानी, डेटा जिसमें रिक्त स्थान और स्लैश होते हैं, उन्हें HTTP पर भेजने के लिए प्रारूपित करने के लिए विशेष कोड से बदल दिया जाता है। आप इसे मैन्युअल रूप से कर सकते हैं, लेकिन cURL यह आपके लिए –data-urlencode . का उपयोग करके कर सकता है :
curl --data-urlencode "field1=value1&field2=value2" https://example.org/submit.php
फ़ील्ड नाम यूआरएल एन्कोडेड नहीं हैं - अगर आप उन्हें एन्कोड करना चाहते हैं तो उन्हें = से पहले लगाएं :
curl --data-urlencode "=user name=Linus Torvalds" https://example.org
हम –डेटा-urlencode . का उपयोग करेंगे –डेटा . के बजाय निम्न उदाहरणों के लिए चीजों को आसान बनाने के लिए POST अनुरोध करने के लिए।
URL एन्कोडेड फ़ील्ड अलग से निर्दिष्ट हैं
प्रत्येक प्रपत्र फ़ील्ड नाम/मान अलग से पारित किया जा सकता है - यह चीजों को पढ़ने में बहुत आसान बनाता है:
curl --data-urlencode "field1=value1" --data-urlencode "field2=value2" https://example.org/submit.php
CURL का उपयोग करके एकाधिक/फ़ाइल अपलोड करें
फाइलों सहित मल्टीपार्ट फ़ॉर्म अनुरोधों को POST के माध्यम से –फ़ॉर्म . का उपयोग करके सबमिट किया जा सकता है विकल्प। नीचे दिया गया उदाहरण myfile.txt को फ़ाइल अपलोड फ़ॉर्म फ़ील्ड में अपलोड करेगा:
curl --form "[email protected]" https://example.org/submit.php
फ़ील्ड और फ़ाइलों और फ़ाइल नामों के साथ बहुखण्डीय
प्रपत्र फ़ील्ड नाम और मान जोड़े को फ़ाइल अपलोड और फ़ाइल नाम . के साथ भी शामिल किया जा सकता है अपलोड की गई फ़ाइल के लिए यदि आप इसे बदलना चाहते हैं:
curl --form "[email protected];filename=newfilename.txt" --form field1=value1 --form field2=value2 https://example.org/submit.php
बिना डेटा
बिना किसी डेटा के POST अनुरोध करने के लिए, बस एक खाली स्ट्रिंग पास करें:
curl --data-urlencode '' https://example.org/submit.php
फ़ाइल अपलोड प्रगति दिखा रहा है
अपलोड की प्रगति पर नज़र रखने के लिए, एक -o आउटपुट . जोड़ें प्रगति पट्टी दिखाने का विकल्प:
curl --tr-encoding -X POST -v -# -o output -T myfile.dat https://example.org/submit.php
फ़ाइल में संग्रहीत डेटा सबमिट करना
यदि किसी फ़ाइल में पहले से संग्रहीत डेटा अपलोड कर रहा है, तो इसे एक कर्ल कमांड में पार्स करने के बजाय एक ही बार में सबमिट किया जा सकता है:
curl --data-urlencode [email protected] https://example.org/submit.php
JSON और XML डेटा को उपयुक्त हेडर जोड़कर प्रोग्रामेटिक API सेवाओं के लिए पोस्ट किया जा सकता है:
curl -X POST --data-urlencode @myfile.txt https://example.org/submit.php --header "Content-Type:text/xml" curl -X POST --data-urlencode @myfile.txt https://example.org/submit.php --header "Content-Type:application/json"
निष्कर्ष
यदि आप अक्सर Linux कमांड लाइन पर काम कर रहे हैं तो कर्ल को माहिर करना महत्वपूर्ण है। प्रोग्रामेटिक एपीआई के साथ इंटरैक्ट करने और अपने स्वयं के सर्वर से डेटा स्थानांतरित करने के लिए इसके उपयोग के अलावा, यह कई कार्य कर सकता है जिसके लिए आपको आमतौर पर एक पूर्ण वेब ब्राउज़र की आवश्यकता हो सकती है।
हमारे अन्य Linux शेल और स्क्रिप्टिंग लेख यहाँ देखें!