Netcat का उपयोग करके सर्वर पर पाठ फ़ाइल सामग्री भेजना?


13

पोर्ट 5144 पर एक डेमन प्रक्रिया है, जिसे मैं संशोधित नहीं कर सकता।

मैं सर्वर पर टेक्स्ट फ़ाइल की सामग्री भेजने के लिए netcat का उपयोग करना चाहता हूं, लेकिन यह netcatतब तक टर्मिनल को लटकाए रखता है जब तक मैं Ctrl+ दबाता नहीं हूं C:

cat file.txt | nc -u 127.0.0.1 5144

जिस तरह से मैं इसे काम करने में सक्षम हूं nc -u 127.0.0.1 5144, वह फ़ाइल की सामग्री को मैन्युअल रूप से चलाने और कॉपी / पेस्ट करने से है।

कोई विचार?


यह भी नोट करें:

  1. cat file.txt | ...की ओर जाता है bash: ...: command not foundऔर मैं टर्मिनल का उपयोग करना जारी रख सकता हूं
  2. प्रयोग nc -u 127.0.0.1 5144 < file.txtकरने से समान व्यवहार होता है | ऊपर

जब आप कहते हैं तो क्या होता है cat file.txt | …? कैसे के बारे में nc -u 127.0.0.1 5144 < file.txt?
स्कॉट

क्या आपको -यू का उपयोग करने की आवश्यकता है? इसके अलावा, क्या आपने दूसरी तरफ के लिए कोशिश की, nc -l -p? और क्या आपने nc -p की कोशिश की? (एक nc है जो -l -p का उपयोग करता है, और एक मुझे लगता है कि -p बिना -l का उपयोग करता है)। आपने केवल एक पक्ष, क्लाइंट / आरंभ करने वाला पक्ष दिखाया है। आप सर्वर साइड के लिए क्या कर रहे हैं? परीक्षण के रूप में प्रयास करें, nc को पोर्ट 1234 पर सुनें और देखें कि क्या बिल्ली ... | nc ... इसके लिए काम करता है। मैंने इसे पहले कभी नहीं देखा है, इसलिए यह एक कमजोर हो सकता है, लेकिन शायद यह इस विशेष डेमॉन के लिए कुछ अजीब है जो चीजों को स्वीकार नहीं कर रहा है।
बार्लोप

मैं डेमॉन को संशोधित नहीं कर सकता। @Scott: bash: ...: command not foundऔर "<file.txt" का उपयोग करने पर वही होता है | ऑपरेटर (नेटकैट सिर्फ लटकता है)
अमिल

क्या आप अधिक सटीक हो सकते हैं? क्या यह " bash: ...: command not found" कहते हैं ? या इसे " bash: cat: command not found" या " bash: nc: command not found" कहते हैं? और फिर क्या यह फिर शेल प्रॉम्प्ट से बाहर निकलता है, या यह लटका हुआ है? (मैं आपको इन विवरणों को जोड़ने के लिए प्रश्न को संपादित करने के लिए प्रोत्साहित करता हूं, इसलिए ऑस्ट्रेलिया में जो लोग अभी जाग रहे हैं उन्हें इन सभी टिप्पणियों के माध्यम से पढ़ने के लिए पता नहीं है कि आपके लक्षण क्या हैं।)
स्कॉट

@ स्थिति: धन्यवाद, मैंने मूल प्रश्नों में आपके प्रश्नों के उत्तर एकीकृत कर दिए हैं। कोई विचार?
Amil

जवाबों:


7

यदि आप netcat के GNU संस्करण का उपयोग कर रहे हैं तो आप EOF पर कनेक्शन को बंद करने के लिए -c ध्वज का उपयोग कर सकते हैं।

-सी, - स्टड से ईओएफ पर करीबी कनेक्शन

यदि आप उपकरण के मूल संस्करण का उपयोग कर रहे हैं तो आप -q ध्वज का उपयोग कर सकते हैं।

स्टेक पर ईओएफ और सेकंड की देरी के बाद -q सेक छोड़ दें

मूल संस्करण के लिए एक उदाहरण है:

cat file.txt | nc -u -q 0 127.0.0.1 5144

मैंने आपके मूल आदेश में "-q 0" जोड़ दिया है। यह फ़ाइल भेजे जाने के बाद कनेक्शन बंद कर देता है।


भेद करने के लिए: मूल संस्करण वह है जिसे -l -p <port>सुनने के लिए निर्दिष्ट करने की आवश्यकता होती है । GNU संस्करण बस लेता है -l <port>
tueftl

1

यह मानते हुए कि ईओएफ भेजने के बाद कनेक्शन निष्क्रिय रहेगा, आप -w timeoutविकल्प का उपयोग कर सकते हैं , जो timeoutशून्य के बराबर होने के लिए काम करता है (बेवकूफ -qविकल्प के विपरीत ...)

cat file.text | nc -u localhost 4300 -w0

0

यदि आप FreeBSD से Windows में स्थानांतरित कर रहे हैं:

FreeBSD: cat file.txt | nc -N 10.0.0.5 5144

-N EOF के बाद नेटवर्क सॉकेट बंद कर देगा

खिड़कियाँ: nc -l -p 5144 > output.txt

-lबंद कनेक्शन पर सुनना बंद कर देगा (विपरीत -L)

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.