खैर, जैसा कि विकिपीडिया और netcatदस्तावेज़ीकरण में प्रलेखित है, एक -eविकल्प है जो इसे कनेक्शन की प्राप्ति पर एक कार्यक्रम ( ई xecute) स्पॉन करने का कारण बनता है , गर्तिका को स्टड, स्टडआउट, और प्रक्रिया के stderr में संलग्न करता है। उदाहरण का उपयोग:
nc -l -pport_number -eprogram_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लूप में लपेटना चाह सकते हैं ।