Trebuie să rulez o comandă într-un terminal pentru a primi mesaje în mod continuu din altă parte a rețelei. Nu am control asupra formulării lungimii mesajului. Comanda, totuși, este capabilă să primească și să imprime câte un mesaj complet la un moment dat (și, de asemenea, nu am control asupra acestei comenzi).
Sarcina mea este să redirecționez acest flux de mesaje către un port local. O aplicație care ascultă portul respectiv va procesa în continuare mesajele. Iată problema: trebuie să setez un buffer de recepție la aplicație (să zicem 1024 de octeți) și după cum urmează protocolul TCP (după cum s-a discutat abundent Aici), mesajele pur și simplu nu sunt în originalul lor bucată mare
. Și lungimea mesajului poate să nu fie constantă (ca exemplul meu de mai jos)
Vreau să atașez un caracter special la începutul și la sfârșitul mesajului pe care comanda îl scuipă pentru a le procesa pe cealaltă parte. Iată un exemplu mai specific:
Pe terminal, rulez această comandă;
comanda mea | tricou | netcat localhost 2003
Această comandă primește mesajele în bucățile lor originale și redirecționează către portul 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
Cum pot încheia fiecare rând de mai sus astfel:
<action_1_timestamp_2021_6_09_10_34_23_abort>
înainte de a fi transmis de către netcat localhost 2003
. Nu sunt foarte familiarizat cu scripting-ul bash.