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/data
al 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 ncat
o socat
:
Lado del servidor
Cuando el cliente se conecte, ejecute el programa ejecutable /usr/bin/data
y 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