netcat trong shell script cho kết nối không hợp lệ


13

Tôi có một tập lệnh shell sử dụng netcatđể nghe localhosttrên cổng 1111 cho các yêu cầu web. Mỗi lần tôi thử truy cập, localhost:1111/index.htmltôi nhận được:

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

con số ở cuối (60038) dường như đang tăng lên mỗi khi tôi truy cập localhost.

Bất kỳ đề xuất về những gì đang xảy ra? Và default localhostthư mục là gì? Tôi nên đặt một index.htmlcái ở đâu localhost:1111/index.htmlđể làm việc?

BIÊN TẬP

đây là kịch bản đầy đủ:

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

Số ở cuối là cổng nguồn, được chọn ngẫu nhiên; đó là cổng được trình duyệt của bạn sử dụng để mở yêu cầu gửi đi. Đừng lo lắng về nó. Bạn có thể gửi netcatdòng lệnh của bạn ? Là thông báo 'kết nối không hợp lệ' đến từ netcathoặc một công cụ khác?
mrb

Tôi chỉ cần thêm kịch bản đầy đủ. Tôi không chắc nếu netcat đưa ra thông điệp, nó có thể được đặt. Tôi không chắc chắn những gì thiết lập mặc dù!
MinaHany

Kịch bản đó là phía nghe. Bạn cũng có thể gửi phía khách hàng?
jw013

Câu trả lời:


6

Kịch bản gốc của bạn yêu cầu kết nối đến từ một máy chủ có tên localhost, nhưng vì một số lý do khiến việc lọc bị lỗi. Không bình thường, vì nó khớp chính xác với tên được liệt kê trong lỗi:invalid connection to [127.0.0.1] from localhost [127.0.0.1] 60038

Lệnh này sẽ lắng nghe trên localhostgiao diện mạng (và sẽ bỏ qua các yêu cầu từ các giao diện khác, như mạng LAN của bạn):

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

Nếu bạn muốn nghe yêu cầu trên tất cả các giao diện, bạn có thể bỏ -shoàn toàn phần này:

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

Trên hệ thống của tôi, nếu tôi muốn thực hiện cùng loại lọc máy chủ nguồn mà không cần -s, tôi cần sử dụng một trong hai 127.0.0.1hoặc localhost.localdomain:

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

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

Trong mọi trường hợp, một trong các tùy chọn trên sẽ phù hợp với bạn:

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

Cảm ơn rất nhiều! thay đổi localhost thành 127.0.0.1 dường như thực hiện thủ thuật trên firefox. Chrome tôi đang xử lý mọi thứ khác nhau.
MinaHany
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.