Utilice netcat para escuchar en un puerto y enviar la salida de un comando cuando un cliente se conecta

Utilice netcat para escuchar en un puerto y enviar la salida de un comando cuando un cliente se conecta

Tengo una Raspberry Pi (Debian Linux) conectada a mi LAN que puede leer datos de algunos dispositivos conectados y enviarlos a STDOUT.

Digamos que el programa se ejecuta en el "Servidor" y quiero enviar la salida del script /usr/bin/dataal puerto 1234.

Quiero que cualquier cliente obtenga el resultado de ese script conectándose a ese puerto, usando algo como

nc Server 1234 > ServerData.txt

Quiero que el servidor permanezca activo, ejecute el script para cada conexión, entregue los datos y luego cierre la conexión con el cliente. El servidor debe permanecer activo y esperar la siguiente conexión.

¿Cuál es el comando netcat para ejecutar en el servidor?

Respuesta1

Se requerirá una de las versiones más avanzadas de netcat. Puedes usar ncato socat:

Lado del servidor

Cuando el cliente se conecte, ejecute el programa ejecutable /usr/bin/datay envíe el resultado del programa al 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 del cliente:

Conéctese al servidor y reciba resultados del servidor.

Método NCAT para presentar

$ ncat Server 1234 | tee ServerData.txt

Método NC (netcat) para la salida estándar

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

para guardar en un archivo reemplace /dev/stdout con un nombre de archivo

Método WGET para presentar

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

para imprimir resultados reemplace myfile.txt con /dev/stdout

información relacionada