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/data
para 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 ncat
ou socat
:
Lado do servidor
Quando o cliente se conectar, execute o programa executável /usr/bin/data
e 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