Caras, consegui com o socat e MUITO, mas MUITO google.
Não estava conseguindo entender direito como os fds se comunicavam via socat
Aí escrevi um "server" e um "client" bem simples para entender melhor
$ cat srv.sh
#!/bin/bash
echo -n "manda algo"
while read p
do
echo "testando: $p" >> log.log
echo "Respondi: $p";
echo "resposta: $p";
done
e
$ cat client.sh
#!/bin/bash
while read -n1 char;
do
resp+=$char;
echo -n $resp
echo "AQUITEMRESPOSTA${resp}ENTREPALAVRAS" >&4
done <&3
aí startei o server em um terminal com
nc -nltp 1337 -e srv.sh
e em outro
$ socat TCP4:x.x.x.x:33333 EXEC:/home/atcasanova/client.sh,fdin=3,fdout=4
a partir daí passei a entender melhor como funcionava (ou não), aí foi só colocar minha lógica em volta dentro do client.sh
Obrigado mesmo assim