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