/ dev / tcp नहीं मिला


21

जब मैं निम्नलिखित कमांड चलाने की कोशिश करता हूं:

echo -e "GET / HTTP/1.1\n\n" | /dev/tcp/74.125.225.19/80

मुझे निम्न त्रुटि संदेश मिलता है:

bash: /dev/tcp/74.125.225.19/80: No such file or directory

निम्न आदेश पूरी तरह से काम करता है, इसलिए समस्या में यह शामिल है कि मैं कैसे उपयोग कर रहा हूं /dev/tcp:

echo -e "GET / HTTP/1.1\n\n" | nc 74.125.225.19 80

मैं Ubuntu 13.04 में हूं, इसलिए क्षमता मेरे सिस्टम पर होनी चाहिए। मैं क्या गलत कर रहा हूं? /dev/tcpठीक से उपयोग करने के नियम क्या हैं ?


जवाबों:


34

आपको इसका उपयोग पुनर्निर्देशन में करना होगा :

बैश विशेष रूप से पुनर्निर्देशन में उपयोग किए जाने पर कई फ़ाइलनामों को संभालता है, जैसा कि निम्नलिखित तालिका में वर्णित है:

...

/ Dev / टीसीपी / होस्ट / पोर्ट

यदि होस्ट एक मान्य होस्टनाम या इंटरनेट पता है, और पोर्ट एक पूर्णांक पोर्ट नंबर या सेवा का नाम है, तो बैश संबंधित टीसीपी सॉकेट खोलने का प्रयास करता है।

इसलिए:

printf "GET / HTTP/1.1\n\n" > /dev/tcp/74.125.225.19/80

इसका उपयोग करने का सही तरीका है।

जब आप /dev/tcp/74.125.225.19/80एक पाइप में इस्तेमाल करते हैं , तो bashनाम की एक कमांड चलाने का प्रयास किया जाता है/dev/tcp/74.125.225.19/80 और एक त्रुटि की सूचना दी गई क्योंकि उस फ़ाइल का अस्तित्व नहीं था।


संभालने की क्षमता /dev/tcp/host/portऔर/dev/udp/host/portbashसंस्करण 2.04 में पुनर्निर्देशन जोड़ा गया था ।

आपको विकल्प के bashसाथ संकलित करने की आवश्यकता है --enable-net-redirections


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