com socat
:
mkfifo pipe &&
<pipe socat tcp-listen:"$portB",reuseaddr,fork,bind=localhost - |
socat - tcp:localhost:"$portC" >pipe
Ou melhor ainda (evite o fifo e a camada extra de comunicação entre processos):
socat "tcp:localhost:$portC" \
"exec:\"socat - tcp-listen:$portB,reuseaddr,fork,bind=localhost\",nofork"
Por causa do nofork
, o segundo socat
seria executado com seu stdin e stdout diretamente conectados ao soquete para C.