Use o netcat para escutar em uma porta e enviar a saída de um comando quando um cliente se conectar

Use o netcat para escutar em uma porta e enviar a saída de um comando quando um cliente se conectar

Eu tenho um Raspberry Pi (Debian Linux) conectado à minha LAN que pode ler dados de alguns dispositivos conectados e enviá-los para STDOUT.

Digamos que o programa seja executado em "Servidor" e eu queira enviar a saída do script /usr/bin/datapara a porta 1234.

Quero que qualquer cliente extraia a saída desse script conectando-se a essa porta, usando algo como

nc Server 1234 > ServerData.txt

Quero que o servidor permaneça ativo, execute o script para cada conexão, sirva os dados e depois feche a conexão com o cliente. O servidor precisa permanecer ativo e aguardar a próxima conexão.

Qual é o comando netcat para rodar no servidor ???

Responder1

Será necessária uma das versões mais avançadas do netcat. Você pode usar ncatou socat:

Lado do servidor

Quando o cliente se conectar, execute o programa executável /usr/bin/datae envie a saída do programa ao cliente.

Método NCAT:

$ ncat -l 1234 -c '/usr/bin/data' --keep-open

Método SOCAT

$ socat -U TCP-LISTEN:5403,fork EXEC:'/usr/bin/data',stderr,pty,echo=0

Lado do cliente:

Conecte-se ao servidor e receba a saída do servidor.

Método NCAT para arquivo

$ ncat Server 1234 | tee ServerData.txt

Método NC (netcat) para stdout

$ </dev/null nc <Server.ip> 5403 > /dev/stdout

para salvar em um arquivo, substitua /dev/stdout por um nome de arquivo

Método WGET para arquivo

$ wget -q <Server.ip>:5403 -O myfile.txt

para imprimir os resultados, substitua myfile.txt por /dev/stdout

informação relacionada