쉘 스크립트의 netcat이 잘못된 연결을 제공합니다

쉘 스크립트의 netcat이 잘못된 연결을 제공합니다

웹 요청을 포트 1111에서 netcat수신하는 쉘 스크립트가 있습니다 . 예를 들어, 액세스를 시도할 때마다 다음을 얻습니다.localhostlocalhost: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

답변1

원본 스크립트를 사용하려면 이름이 호스트인 호스트에서 연결되어야 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
$

관련 정보