अमान्य कनेक्शन देने वाले शेल स्क्रिप्ट में netcat


13

मेरे पास एक शेल स्क्रिप्ट है जो वेब अनुरोधों के लिए पोर्ट 1111 पर netcatसुनने के लिए उपयोग करता है localhost। जब भी मैं localhost:1111/index.htmlउदाहरण के लिए पहुँच पाने की कोशिश करता हूँ :

invalid connection to [127.0.0.1] from localhost [127.0.0.1] 60038

अंत में संख्या (60038) हर बार जब मैं पहुंचता हूं तो बढ़ती हुई प्रतीत होती है localhost

क्या गलत हो रहा है पर कोई सुझाव? और default localhostडायरेक्टरी क्या है ? मुझे index.htmlऐसा कहां लगाना चाहिए जो localhost:1111/index.htmlकाम करे?

संपादित करें

यहाँ पूरी स्क्रिप्ट है:

#!/bin/sh
while true
do
netcat -vvl localhost -p 1111 -c '
    set -x
    read http_request
    echo HTTP/1.0 200 OK
    echo
    echo "Received HTTP request: $http_request"
'   
done

अंत में संख्या स्रोत पोर्ट है, जिसे यादृच्छिक रूप से चुना जाता है; आउटगोइंग अनुरोध को खोलने के लिए आपके ब्राउज़र द्वारा उपयोग किया जाने वाला पोर्ट है। इसके बारे में चिंता मत करो। क्या आप अपनी netcatकमांड लाइन पोस्ट कर सकते हैं ? क्या 'अमान्य कनेक्शन' संदेश netcatकिसी अन्य उपकरण से आ रहा है ?
mrb

मैंने अभी पूरी स्क्रिप्ट जोड़ी है। मुझे यकीन नहीं है कि अगर नेटकैट संदेश दे रहा है, तो इसे सेट किया जा सकता है। मुझे यकीन नहीं है कि सेट क्या करता है, हालांकि!
मिन्हनी

वह लिपि सुनने का पक्ष है। क्या आप ग्राहक पक्ष को भी पोस्ट कर सकते हैं?
jw013

जवाबों:


6

आपकी मूल स्क्रिप्ट के लिए यह आवश्यक है कि कनेक्शन किसी होस्ट नाम से आए localhost, लेकिन किसी कारण से फ़िल्टरिंग विफल हो रही है। असामान्य, क्योंकि यह त्रुटि में सूचीबद्ध नाम से बिल्कुल मेल खाता है:invalid connection to [127.0.0.1] from localhost [127.0.0.1] 60038

यह कमांड localhostनेटवर्क इंटरफेस पर सुनेगा (और आपके LAN की तरह अन्य इंटरफेस के अनुरोधों को नजरअंदाज करेगा):

netcat -vvl -s localhost -p 1111 -c '
    set -x
    read http_request
    echo HTTP/1.0 200 OK
    echo
    echo "Received HTTP request: $http_request"
'

यदि आप सभी इंटरफेस पर अनुरोधों को सुनना चाहते हैं, तो आप इस -sभाग को पूरी तरह से छोड़ सकते हैं:

netcat -vvl -p 1111 -c '...'

अपने सिस्टम पर, अगर मैं उसी तरह के सोर्स होस्ट को बिना फ़िल्टर किए करना चाहता हूं, तो मुझे या -sतो उपयोग करने की आवश्यकता है 127.0.0.1या localhost.localdomain:

netcat -vvl localhost.localdomain -p 1111 -c '...'

netcat -vvl 127.0.0.1 -p 1111 -c '...'

किसी भी स्थिति में, उपरोक्त विकल्पों में से एक आपके लिए काम करना चाहिए:

$ netcat -vvl 127.0.0.1 -p 1111 -c '
quote>     set -x
quote>     read http_request
quote>     echo HTTP/1.0 200 OK
quote>     echo
quote>     echo "Received HTTP request: $http_request"
quote> '
listening on [any] 1111 ...
connect to [127.0.0.1] from localhost.localdomain [127.0.0.1] 35368
+ read http_request
+ echo HTTP/1.0 200 OK
+ echo
+ echo Received HTTP request: GET / HTTP/1.1
$

आपका बहुत बहुत धन्यवाद! बदलते लोकलहोस्ट को 127.0.0.1 पर फ़ायरफ़ॉक्स पर ट्रिक करने के लिए लग रहा था। Chrome मेरे हिसाब से चीजों को अलग तरह से संभाल रहा है।
मिनाहनी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.