क्या मैं नेटकैट के माध्यम से एक कंसोल एप्लिकेशन को पाइप / रीडायरेक्ट कर सकता हूं ताकि इसे दूरस्थ रूप से उपयोग किया जा सके?


10

क्या नेटकैट के माध्यम से कंसोल एप्लिकेशन का एक उदाहरण 'पाइप' करना संभव है, इसलिए नेटकैट एक नए कनेक्शन के लिए सुन रहा है stdinऔर stdoutनेटवर्क कनेक्शन पर और रीडायरेक्ट करता है ।


हाँ, लेकिन यह एक लाइनर हो सकता है, जो ठीक है, पाइप ऐसा है। मैं नहीं जानता कि क्या आप nc और पाइप को pid ​​द्वारा पहले से चल रहे उदाहरण के लिए बता सकते हैं। आप एक आईपी को nc कर सकते हैं और इसे सुन रहे nc को पाइप कर सकते हैं और एक nc को पाइप कर सकते हैं जो सुन रहा है आदि और पाइप जो एक ip को nc कर सकता है।
बारलोप

मैंने शीर्षक बदल दिया क्योंकि आप जो उल्लेख करते हैं वह पाइप के उपयोग के बजाय I / O पुनर्निर्देशन की तरह अधिक लगता है (जो केवल एक प्रक्रिया के आउटपुट को दूसरे के इनपुट पर ले जाने से संबंधित है)।
ब्रेकथ्रू

@ अजीब है कि पाइप से अलग कैसे होता है? जैसा कि वह IO पुनर्निर्देशन के बारे में बात कर रहा है और फ़ाइलों के बारे में बात नहीं कर रहा है, फिर यह पाइपिंग से कैसे भिन्न है?
बार्लोप

@barlop I / O पुनर्निर्देशन ( <या >) पाइपिंग ( |) से काफी अलग है , हालांकि आप कभी-कभी दोनों के मिश्रण के साथ एक समान संचालन प्राप्त कर सकते हैं। फिर से, I / O पुनर्निर्देशन के साथ, आप दोनों धाराओं का स्थान बदल सकते हैं ; पाइपिंग सिर्फ एक प्रक्रिया के मानक आउटपुट को दूसरे के मानक इनपुट पर पुनर्निर्देशित करता है।
ब्रेकथ्रू

@ शानदार देखें कि मैंने आपसे क्या पूछा था। > और <निश्चित रूप से पाइपिंग से अलग है क्योंकि <और> फ़ाइलों का उपयोग करें। लेकिन वह फाइलों की बात नहीं कर रहा है। मैंने आपसे पूछा "वह [IO पुनर्निर्देशन] पाइप से कैसे भिन्न होता है? जैसा कि वह IO पुनर्निर्देशन के बारे में बात कर रहा है और फ़ाइलों के बारे में बात नहीं कर रहा है, तो यह पाइपिंग से कैसे भिन्न होता है?"
barlop

जवाबों:


16

खैर, जैसा कि विकिपीडिया और 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लूप में लपेटना चाह सकते हैं ।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.