Bash में /dev/TCP का उपयोग करके बिना curl के HTTP अनुरोध भेजें

मूल शीर्षक: TIL: You can make HTTP requests without curl using Bash /dev/TCP

यह क्यों महत्वपूर्ण है

न्यूनतम कंटेनर इमेजों में नेटवर्क डीबगिंग के लिए व्यावहारिक तरीका प्रदान करता है।

एक डेवलपर ने Bash के अंतर्निर्मित /dev/TCP रीडायरेक्शन का उपयोग करके curl या wget के बिना HTTP अनुरोध भेजने का तरीका दिखाया। इस तकनीक को न्यूनतम कंटेनर इमेजों में नेटवर्क कनेक्टिविटी जांचने के लिए उपयोगी माना गया है।

मरेक सुप्पा ने अपने ब्लॉग में एक व्यावहारिक समाधान साझा किया जो तब काम आता है जब Docker कंटेनर में curl या wget स्थापित नहीं होते हैं। उन्हें एक आंतरिक Docker नेटवर्क पर दो कंटेनरों के बीच कनेक्टिविटी जांचनी थी, लेकिन अनावश्यक उपकरणों को हटाकर छोटी इमेज का उपयोग किया जा रहा था।

समाधान Bash के /dev/tcp रीडायरेक्शन का उपयोग करता है, जो एक वर्चुअल डिवाइस फ़ाइल है जो वास्तविक डिस्क पर मौजूद नहीं है, बल्कि Bash द्वारा आंतरिक रूप से संभाली जाती है। मूल कमांड होस्ट और पोर्ट को निर्दिष्ट करते हुए TCP सॉकेट खोलती है, फिर मानक HTTP अनुरोध लिखती है। उदाहरण: exec 3<>/dev/tcp/service/8642 और printf के साथ GET अनुरोध भेजना।

लेख महत्वपूर्ण सीमाओं को भी रेखांकित करता है: यह विधि स्वचालित रीडायरेक्ट, संपीड़न, TLS/HTTPS, या अन्य HTTP सुविधाओं को संभालती नहीं है। Connection: close हेडर आवश्यक है अन्यथा कनेक्शन खुला रहता है। यह Bash-विशिष्ट है और POSIX शेल में काम नहीं करता है। /dev/tcp सक्षम करने के लिए Bash को --enable-net-redirections विकल्प के साथ संकलित किया जाना चाहिए, जो अधिकांश मुख्यधारा के निर्माणों में सक्षम है।

स्रोत

mareksuppa.com — मूल लेख पढ़ें →