2012-03-14 19 views
79

मैं एक यूडीपी पैकेट में केवल एक कम मूल्य भेजना चाहते हैं, लेकिन आदेश चलाकरनेटकैट के साथ केवल एक यूडीपी पैकेट कैसे भेजें?

echo -n "hello" | nc -4u localhost 8000 

मैं देख सकता हूँ सर्वर हैलो सामान मिल रहा है कि लेकिन मैं प्रेस करने Ctrl +सी है Netcat कमांड छोड़ने के लिए

हैलो भेजने के बाद मैं इसे कैसे छोड़ सकता हूं?


क्षमा करें, शोर के लिए, मैं आदमी पेज फिर से पढ़ सकते हैं और -q विकल्प मिल गया।

echo -n "hello" | nc -4u -q1 localhost 8000 

काम करता है (यह 1 सेकंड के बाद छोड़ देता है)।

किसी कारण से यह -q0 के साथ काम नहीं करता है।

+0

डेबियन पर मैन पेज: '-q सेकंड: stdin पर ईओएफ के बाद, सेकंड की निर्दिष्ट संख्या प्रतीक्षा करें और फिर छोड़ दें। यदि सेकंड ऋणात्मक है, तो हमेशा के लिए प्रतीक्षा करें। – luckydonald

उत्तर

41

मुझे अपने नेटकैट पर -q1 विकल्प नहीं मिला। इसके बजाय मैंने -w1 विकल्प का उपयोग किया।

#!/bin/bash 

def_host=localhost 
def_port=43211 

HOST=${2:-$def_host} 
PORT=${3:-$def_port} 

echo -n "$1" | nc -4u -w1 $HOST $PORT 
+4

धन्यवाद, मेरे लिए ओएसएक्स पर भी '-w0' ठीक काम करता है। – SimonW

+0

ओएस एक्स यह काम करता है: "echo -n" test "| nc -4u -w0 localhost 9999" जैसा कि साइमन डब्ल्यू कहते हैं –

136

आप बैश का उपयोग कर रहे हैं, तो आप के रूप में अच्छी

echo -n "hello" >/dev/udp/localhost/8000 

लिख सकते हैं और सभी idiosyncrasies और असंगति से बचने के सकता है: नीचे बैश स्क्रिप्ट मैं किसी भी मेजबान और पोर्ट के लिए एक यूडीपी पैकेट भेजने के लिए किया है नेटकैट का।

यह भी अन्य मेजबान के लिए भेजने से काम करता है, उदाहरण के लिए:

echo -n "hello" >/dev/udp/remotehost/8000 

ये फाइल सिस्टम पर "असली" उपकरण नहीं हैं, लेकिन पार्टी "विशेष" aliases

+1

यह सही नहीं है। यह लिनक्स तक ही सीमित नहीं है। –

+5

हां, यह बैश के साथ ओएस एक्स पर काम करता है। –

+10

ठीक है, आप सही हैं, मुझे बस यह स्पष्ट करना है कि यह ZSH के साथ काम नहीं करेगा। – jturolla

4

नेटकैट प्रति नई लाइन एक पैकेट भेजता है। तो तुम ठीक हो यदि आप कुछ और जटिल करते हैं तो आपको कुछ और चाहिए।

जब मैं इसे महसूस करता था तो मैं वायर्सहार्क के साथ बेवकूफ बना रहा था। पता नहीं है कि यह मदद करता है।

-c, --close    close connection on EOF from stdin 

इसलिए,

echo "hi" | nc -cu localhost 8000 

चाल करना चाहिए:

+3

के बिना लिख ​​रहा है मुझे लगता है कि यह केवल टीसीपी के लिए सही है। यूडीपी के साथ, यह एक पैकेट में कई लाइनें भेजेगा (यदि वे फिट हैं)। – sleske

4
एक मौजूदा netcat (v0.7.1) यदि आप एक -c स्विच है पर

+0

यह ध्यान रखना महत्वपूर्ण है कि यह केवल जीएनयू नेटकैट के लिए सही है, लेकिन बीएसडी नेटकैट के लिए नहीं। – MarSoft