
Preciso executar um comando em um terminal para receber continuamente mensagens de outros lugares da rede. Não tenho controle sobre a formulação do comprimento da mensagem. O comando, entretanto, é capaz de receber e imprimir uma mensagem completa por vez (e também não tenho controle sobre esse comando).
Minha tarefa é encaminhar esse fluxo de mensagens para uma porta local. Um aplicativo que escuta essa porta processará ainda mais as mensagens. Aqui está o problema: eu tenho que definir um buffer de recebimento no aplicativo (digamos 1024 bytes) e conforme o protocolo TCP segue (conforme discutido fortementeaqui), as mensagens simplesmente não passam no original chunk
. E o comprimento da mensagem pode não ser constante (como meu exemplo abaixo)
Quero acrescentar um caractere especial no início e no final da mensagem que o comando emite para processá-los do outro lado. Aqui está um exemplo mais específico:
No terminal, executo este comando;
mycommand | tee | netcat localhost 2003
Este comando recebe as mensagens em seus pedaços originais e encaminha para a porta 2003:
action_1_timestamp_2021_6_09_10_34_23_abort
action_2_timestamp_2021_6_09_10_34_34_success
...
action_193848_timestamp_2021_6_23_10_34_23_hold
Como posso quebrar cada linha acima assim:
<action_1_timestamp_2021_6_09_10_34_23_abort>
antes de ser encaminhado por netcat localhost 2003
. Não estou muito familiarizado com scripts bash.