test - receive udp bash
Servidor de eco con bash (4)
Cómo escribir un script bash de servidor de eco usando herramientas como nc, echo, xargs, etc. capaces de procesar simultáneamente solicitudes de múltiples clientes, cada una con conexión duradera.
Lo mejor que he encontrado hasta ahora es
nc -l -p 2000 -c ''xargs -n1 echo''
pero solo permite una conexión única.
Aquí hay unos ejemplos. servicios simples ncat
Servidor de eco TCP
ncat -l 2000 --keep-open --exec "/bin/cat"
Servidor de eco UDP
ncat -l 2000 --keep-open --udp --exec "/bin/cat"
Si utiliza ncat en lugar de nc, su línea de comando funciona bien con varias conexiones, pero (como ha señalado) sin -p.
ncat -l 2000 -k -c ''xargs -n1 echo''
ncat está disponible en http://nmap.org/ncat/ .
PS con el netcat original de Hobbit (nc) el indicador -c no es compatible.
Actualización: ahora se requiere -k (--keep-open) para manejar múltiples conexiones.
En caso de que ncat no sea una opción, socat también funcionará:
socat TCP4-LISTEN:2000,fork EXEC:cat
La fork
es necesaria, por lo que se pueden aceptar conexiones múltiples. Agregar reuseaddr
a TCP4-LISTEN
puede ser conveniente.
netcat
solución de netcat
preinstalada en Ubunutu
El netcat
preinstalado en Ubuntu 16.04 proviene de netcat-openbsd
, y no tiene opción -c
, pero el manual ofrece una solución:
sudo mknod -m 777 fifo p
cat fifo | netcat -l -k localhost 8000 > fifo
Entonces ejemplo del cliente:
echo abc | netcat localhost 8000
TODO: ¿cómo modificar el valor de la cadena de entrada? Lo siguiente no devuelve ninguna respuesta:
cat fifo | tr ''a'' ''b'' | netcat -l -k localhost 8000 > fifo
El ejemplo de shell remoto sin embargo funciona:
cat fifo | /bin/sh -i 2>&1 | netcat -l -k localhost 8000 > fifo
Sin embargo, no sé cómo tratar con solicitudes simultáneas.