Envíe un archivo binario (línea por línea) a un servidor de socket con Netcat

Como un spin offesta pregunta de desbordamiento de pila Quiero archivar lo mismo excepto por un par de retoques.

Quiero conectarme a un host, enviar un archivo binario, línea por línea, y tener un par de segundos de retraso entre cada línea ... y debe estar en la misma conexión. La mayoría de las cadenas que deseo enviar están basadas en texto, pero hay un par de caracteres no imprimibles en la línea.

Este es un ejemplo de una cadena / línea que quiero enviar (miles de líneas por archivo):

<null>e<null><null>00326513,6598,no,8,,2z<null>

los<null> valor es el valor HEX0x00.

He reescrito mi pregunta desde su primera entrada pero@mzet Me contestó en mi pregunta original, ya que mi pregunta era solo de texto, pero más tarde descubrí que mi cadena tenía estos0x00 caracteres dentro de los cuales no pude ver al principio. Quiero usar su respuesta como base, ya que creo que casi funciona, pero puede que necesite un cambio, así que esta es su contribución, no la mía.

Si tengo un archivo con 3 líneas:

<null>e<null><null>00370513,6598,no,8,,2z<null>
<null>f<null><null>00891548,6598,yes,8,,3z<null>
<null>f<null><null>00129525,6598,yes,8,,2z<null>

Entonces pensé que podía pellizcar@mzet responde y reemplaza el<null> valores dentro de mi archivo con\x00 y establecer-e sobre elecho mando:

[root@srv]# mkfifo /tmp/fifoIn; cat /tmp/fifoIn | nc localhost 2222 &
[root@srv]# cat myfile | while read line; do echo -ne $line; sleep 2; done > /tmp/fifoIn

Cuando hago eso, puedo ver elx00 en el servidor:

[root@srv]# nc -l 2222
x00ex00x0000370513,6598,no,8,,2zx00
x00fx0000891548,6598,yes,8,,3zx00
x00fx00x0000129525,6598,yes,8,,2zx00

¿Es posible enviar un archivo binario (texto?) Como quiera? Y si no es posible enviar un archivo, línea por línea, ¿es posible enviar una cadena varios miles de veces? Estrictamente necesarios, no tienen que ser únicos o en un archivo, ya que podría manejarlo con la misma cadena repitiéndose.

EDITAR # 1

¿Por qué mi script solo envía una línea al servidor (esperaría 4 líneas) después de eso solo se detiene (?) Para siempre. El cliente (ni el servidor) cierra su conexión pero no viene con ningún error:

rm -f /tmp/fifofile
mkfifo /tmp/fifofile
cat /tmp/fifofile | nc 192.168.20.6 5000 &
sleep 1

i="0"

while [ $i -lt 4 ]
do
  echo "$i"
  echo -ne "\x00e\x00\x00001212dsfdsfdsfsdfsdfsdfdsf\x00" | tee /tmp/fifofile
  sleep 1
  i=$[$i+1]
done

Respuestas a la pregunta(2)

Su respuesta a la pregunta