netcat dalam skrip shell yang memberikan koneksi tidak valid


13

Saya memiliki skrip shell yang digunakan netcatuntuk mendengarkan localhostpada port 1111 untuk permintaan web. Setiap kali saya mencoba mengakses localhost:1111/index.htmlmisalnya saya mendapatkan:

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

angka di akhir (60038) tampaknya meningkat setiap kali saya mengakses localhost.

Ada saran tentang apa yang salah? Dan apa default localhostdirektori itu? Di mana saya harus meletakkan index.htmlsehingga itu localhost:1111/index.htmlakan berhasil?

EDIT

inilah skrip lengkapnya:

#!/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

Nomor pada akhirnya adalah port sumber, yang dipilih secara acak; itulah port yang digunakan oleh browser Anda untuk membuka permintaan keluar. Jangan khawatir tentang itu. Bisakah Anda memposting netcatbaris perintah Anda ? Apakah pesan 'koneksi tidak sah' berasal dari netcatatau alat lain?
mrb

Saya baru saja menambahkan skrip lengkap. Saya tidak yakin apakah netcat memberikan pesan, itu mungkin diatur. Saya tidak yakin apa yang diatur bahkan!
MinaHany

Naskah itu adalah sisi mendengarkan. Bisakah Anda juga memposting sisi klien?
jw013

Jawaban:


6

Skrip asli Anda mengharuskan koneksi berasal dari host yang bernama localhost, tetapi karena alasan tertentu pemfilteran gagal. Tidak biasa, karena cocok persis dengan nama yang tercantum dalam kesalahan:invalid connection to [127.0.0.1] from localhost [127.0.0.1] 60038

Perintah ini akan mendengarkan pada localhostantarmuka jaringan (dan akan mengabaikan permintaan dari antarmuka lain, seperti LAN Anda):

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"
'

Jika Anda ingin mendengarkan permintaan pada semua antarmuka, Anda dapat menghapus -sbagiannya sekaligus:

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

Di sistem saya, jika saya ingin melakukan penyaringan host sumber yang sama tanpa -s, saya perlu menggunakan salah satu 127.0.0.1atau localhost.localdomain:

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

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

Bagaimanapun, salah satu dari opsi di atas akan bekerja untuk Anda:

$ 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
$

Terima kasih banyak! mengubah localhost ke 127.0.0.1 tampaknya melakukan trik pada firefox. Saya kira Chrome menangani berbagai hal secara berbeda.
MinaHany
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.