Use xargs para enviar solicitudes al mismo servidor en paralelo con netcat

3

Estoy tratando de diseñar una línea para enviar texto a un servidor de eco simple, pero múltiples conexiones en paralelo. Esto es lo que estoy intentando:

echo -e  A,B,C,D | xargs -d, -i -P 4 echo {} |  nc localhost 7000

Sin embargo, no funciona del todo. El servidor recibe cuatro conexiones pero no datos ("nulo").

¿Cuál es el comando xargs y netcat correcto aquí?

noahz
fuente

Respuestas:

1

Esto puede ser un poco más conciso (y fácil de leer, digo) si te gusta usar GNU Parallel :

parallel 'echo {} | nc localhost 7000' ::: A B C D

O incluso:

parallel 'echo {} | nc localhost 7000' ::: {A..D}
Joshua Huber
fuente
0

Use echo -no obtendrá 5 conexiones en lugar de cuatro, una de ellas sin datos. Si en el servidor esto no está marcado, tal vez esté causando su problema.

echo -n A,B,C,D | xargs -d, -I{} -P 4 -n 1 echo {} | nc localhost 7000

Además, al usar un netcat como servidor de escucha, parece funcionar correctamente:

zhen@sydow:~$ nc -l 7000
A
D
B
C

Y también parece ser paralelo, veo un eco fuera de orden.

Zhen
fuente
0

No necesita repetir el eco, es la acción predeterminada de xargs. Este one-liner sirve como una prueba rápida e independiente, pero puede eliminar el oyente de prueba configurado antes de&

nc -l 7001 & echo  A B C D | xargs -P4 -n1 | nc localhost 7001

Resultados:

amit@deimos:~$ nc -l 7001 & echo A B C D | xargs -P4 -n1 | nc localhost 7001
[6] 7115
D
B
C
A
[6]   Done                    nc -l 7001
Amit Naidu
fuente