2011-06-27 15 views
5

मेरे पास पोर्ट 1501 पर नेटकैट पोर्ट सुन रहा है और मैं उस बंदरगाह पर एक नई टर्मिनल विंडो पर प्राप्त इनपुट पाइप करना चाहता हूं। मुझे पता है कि यह एक बुरा विचार है क्योंकि मूल रूप से उस बंदरगाह पर कोई भी मशीन को नियंत्रित कर सकता है लेकिन मैं यह जानना चाहता हूं कि यह संभव है या नहीं। किसी को पता है कि कैसे। मैंने अभी तक यह कोशिश की है।बैश टर्मिनल किसी अन्य टर्मिनल पर रीडायरेक्ट

एनसी-एल 1500 | xterm या एनसी -एल 1500 | xterm -e "NAMEOFWINDOW"

ने एक सरल फैशन में gnome-terminal पर रीडायरेक्ट करने का भी प्रयास किया। मैं

एनसी-एल 1500 कर सकता हूं | grep "SOMEKEYWORD" सफलतापूर्वक।

कोई विचार? -TJ

उत्तर

1

यह संभव नहीं है इस तरह से, xtermstdin पर इनपुट को स्वीकार नहीं करता है, यह कुंजीपटल इनपुट सीधे पकड़ता है।

  • टर्म के बजाय उपयोग bash:

    दो विकल्प हैं nc -l 1500 | bash एक टर्म

  • उपयोग xterm रों -S विकल्प में, लेकिन आप एक तिथि से पहले एक छद्म tty को netcat संलग्न करने के लिए, की जरूरत है xterm को छद्म टर्मिनल
2

में दो समस्याएं संलग्न करें। पहला यह है कि xterm और gnome-terminal प्रोग्राम नहीं हैं जो प्रॉम्प्ट प्रदान करते हैं और कमांड स्वीकार करते हैं - वे आपके कीबोर्ड और स्क्रीन को उस प्रोग्राम से कनेक्ट करने का एक तरीका हैं, जो आपका खोल है (आमतौर पर /bin/bash)। तो, यह वास्तव में bash है कि आप नेटकैट से कनेक्ट करना चाहते हैं।

दूसरा, आपको केवल एक दिशात्मक पाइप से अधिक की आवश्यकता है, जो आपको | के साथ मिलता है। यदि आप का उपयोग करें:

nc -l -p 1500 | /bin/bash 

तो आप केवल एक पाइप उपयोगकर्ता सेbash करना होगा - वे इनपुट देने के लिए सक्षम हो जाएगा, लेकिन किसी भी उत्पादन नहीं देख सकेंगे। वैकल्पिक रूप से, अगर आप ऐसा करेंगे:

/bin/bash | nc -l -p 1500 

फिर विपरीत लागू होगी - आप केवल एक पाइप उपयोगकर्ता करने के लिएbash से होगा। उपयोगकर्ता को bash से आउटपुट दिखाई देगा, लेकिन कोई इनपुट नहीं दे पाएगा। लेकिन ध्यान रखें कि bash एक शीघ्र प्रदर्शित नहीं करेगा के बाद से -

nc -l -p 1500 -e /bin/bash 

यह तुम क्या चाहते हो जाएगा:

सौभाग्य से, netcat एक और आदेश के लिए एक द्विदिश पाइप (वास्तव में, दो पाइप) बनाने के लिए एक विकल्प का समर्थन करता है यह "गैर-इंटरैक्टिव" मोड में चल रहा होगा।

ओह, और एक और बात - हाँ, यह वास्तव में खराब विचार है।

+0

लॉल मैं इसे एक बेवकूफ विचार के बारे में अधिक जानने के लिए जानता हूं। धन्यवाद महान प्रतिक्रिया बीटीडब्ल्यू। बहुत बढ़िया स्पष्टीकरण विवरण समग्र :) अच्छा काम। –

+0

वास्तव में इसे आजमाया। - मैं एक मान्यता प्राप्त स्विच नहीं हूं I ubuntu si का उपयोग करके यह नेटकैट का मेरा संस्करण है या क्या मुझे कुछ याद आ रही है? –

+0

@TJ Pavlu: ओह हाँ, डिफ़ॉल्ट रूप से उबंटू एक नकली नेटकैट स्थापित करता है, आपको 'नेटकैट-पारंपरिक' पैकेज की आवश्यकता होती है, जो 'nc.traditional' प्रदान करती है। – caf

0

आउटपुट को अस्थायी फ़ाइल में रीडायरेक्ट करने के लिए tee का उपयोग कर सकते हैं और फिर tail --follow=name --retry किसी अन्य टर्मिनल में उपयोग कर सकते हैं।

nc -l 1500 | tee /tmp/file.txt 

और निश्चित रूप से:

tail --follow=name --retry /tmp/file.txt 

इस तरह आप tail आदेश बाधित किया जा रहा बिना क्रॉन जॉब के माध्यम से rm -f /tmp/file.txt कर सकते हैं।

+0

मुझे लगता है कि आपने इस सवाल को गलत समझा है। –