खैर, जैसा कि विकिपीडिया और netcat
दस्तावेज़ीकरण में प्रलेखित है, एक -e
विकल्प है जो इसे कनेक्शन की प्राप्ति पर एक कार्यक्रम ( ई xecute) स्पॉन करने का कारण बनता है , गर्तिका को स्टड, स्टडआउट, और प्रक्रिया के stderr में संलग्न करता है। उदाहरण का उपयोग:
nc -l -p
port_number -e
program_name
उदाहरण आमतौर पर प्रोग्राम_नाम के रूप में दिखाए जाते हैं /bin/sh
या bash
उपयोग किए जाते हैं । इस विकल्प का उपयोग हतोत्साहित किया जाता है क्योंकि यह मूल रूप से आपकी मशीन में एक अनाम, पासवर्ड रहित एक्सेस पोर्टल खोलता है। बेशक, यह शेल की तुलना में कम शक्ति वाले प्रोग्राम का उपयोग करके कम किया जाता है (वह जो किसी शेल से बचने की क्षमता नहीं है), इसके उपयोग को कम से कम करना और इसे गुप्त रखना। फिर भी, मूल डेवलपर्स netcat
ने दृढ़ता से पर्याप्त महसूस किया कि यह विकल्प एक बुरा विचार था कि उन्होंने इसे डिफ़ॉल्ट रूप से अक्षम कर दिया, और इसे "GAPING_SECURITY_HOLE" संकलन विकल्प के तहत वातानुकूलित किया। इसका उल्लेख इस नेटकैट ट्यूटोरियल और अन्य netcat
प्रलेखन में संक्षेप में किया गया है ।
Google खोज ने मुझे अन्य स्टैक एक्सचेंज साइटों: स्टैक ओवरफ़्लो और सर्वर फ़ॉल्ट पर इस मुद्दे की चर्चा के लिए प्रेरित किया । एकाधिक योगदानकर्ताओं ने -e
विकल्प का उपयोग किए बिना एक ही काम करने के लिए निम्नलिखित तकनीक की पेशकश की (अर्थात, netcat
उस संस्करण में -e
विकल्प को अक्षम किया गया है):
सर्वर पर:
mkfifo
पाइप_नाम
nc -l -p
पोर्ट_नंबर <
पाइप_नाम |
कार्यक्रम_नाम >
पाइप_नाम
क्लाइंट पर:
nc
server_machine_name
port_number
नोटों की एक जोड़ी:
- के कुछ संस्करणों पर
netcat
, -l
तात्पर्य है -p
, इसलिए आपको बस -l
और फिर पोर्ट नंबर कहना चाहिए ।
- आप अपने समाधान को एक
while true
लूप में लपेटना चाह सकते हैं ।