netcat ในเชลล์สคริปต์ให้การเชื่อมต่อที่ไม่ถูกต้อง


13

ฉันมีเชลล์สคริปต์ที่ใช้netcatเพื่อฟังlocalhostบนพอร์ต 1111 สำหรับคำขอเว็บ ทุกครั้งที่ฉันลองเข้าถึงlocalhost:1111/index.htmlเช่นฉันจะได้รับ:

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

จำนวนที่สิ้นสุด (60,038) 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

ฉันเพิ่งเพิ่มสคริปต์เต็ม ฉันไม่แน่ใจว่า netcat กำลังส่งข้อความอาจถูกตั้งค่า ฉันไม่แน่ใจว่าสิ่งที่ตั้งแม้ทำ!
MinaHany

สคริปต์นั่นคือด้านการฟัง คุณสามารถโพสต์ฝั่งลูกค้าหรือไม่
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
$

ขอบคุณมาก! เปลี่ยน localhost เป็น 127.0.0.1 ดูเหมือนจะทำเคล็ดลับใน Firefox Chrome จัดการกับสิ่งต่าง ๆ ที่ฉันเดา
MinaHany
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.