
Eu uso este comando para escutar a porta e despejar dados no arquivo:
while : ; do nc -l 0.0.0.0 10000 > log.txt & done
A primeira solicitação funciona perfeitamente, é despejada em log.txt, mas após a primeira solicitação, o nc não está mais ouvindo, mas parou.
Alguém pode me indicar o que eu faço de errado?
Eu só quero que isso seja executado continuamente em segundo plano e registre qualquer solicitação desta porta no arquivo log.txt ...
Responder1
Você deve adicionar uma opção paranão. A opção depende da versão donãovocê está correndo. Por exemplo, no meu caso (Kubuntu), a opção é-k. Na página de manual,
-k Força nc a ficar ouvindo outra conexão após a conexão atual ser concluída. É um erro usar esta opção sem a opção -l.
Eu não posso prometer-kfunciona (a menos que você seja Ubuntu, é claro), você terá que procurar por algo semelhante. Por exemplo, no meu Debian,-knão existe, mas você encontra:
-q segundos após EOF em stdin, aguarde o número especificado de segundos e saia. Se segundos for negativo, espere para sempre
Editar:
Para verificar se funciona, em um PC:
nc -k -l 0.0.0.0 10000 > out.txt
Em um segundo PC:
echo Hello | nc IP_address_of_first_pc 10000
Emita o comando acima algumas vezes e depois interrompa onãocomando em pc1, verifique o número de linhas em out.txt.