netcat no script de shell que fornece uma conexão inválida

10

Eu tenho um script de shell que usa netcat para ouvir localhost na porta 1111 para solicitações da web. Toda vez que tento acessar localhost:1111/index.html , por exemplo, recebo:

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

o número no final (60038) parece estar aumentando toda vez que eu acesso localhost .

Alguma sugestão sobre o que está errado? E qual é o diretório default localhost ? Onde devo colocar um index.html para que localhost:1111/index.html funcione?

EDITAR

aqui está o script completo:

#!/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
    
por MinaHany 08.08.2012 / 14:00

1 resposta

6

Seu script original requer que a conexão venha de um host chamado localhost , mas, por algum motivo, a filtragem está falhando. Incomum, porque corresponde exatamente ao nome listado no erro: invalid connection to [127.0.0.1] from localhost [127.0.0.1] 60038

Este comando escutará na interface de rede localhost (e ignorará os pedidos de outras interfaces, como sua 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"
'

Se você deseja ouvir solicitações em todas as interfaces, pode descartar totalmente a parte -s :

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

No meu sistema, se eu quiser fazer o mesmo tipo de filtro de host de origem sem -s , preciso usar 127.0.0.1 ou localhost.localdomain :

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

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

Em qualquer caso, uma das opções acima deve funcionar para você:

$ 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
$
    
por 08.08.2012 / 16:02