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
MinaHany
sumber
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
$
mrb
sumber
Terima kasih banyak! mengubah localhost ke 127.0.0.1 tampaknya melakukan trik pada firefox. Saya kira Chrome menangani berbagai hal secara berbeda.
MinaHany