
Ich muss einen Befehl in einem Terminal ausführen, um kontinuierlich eingehende Nachrichten von anderen Stellen im Netzwerk zu empfangen. Ich habe keine Kontrolle über die Formulierung der Länge der Nachricht. Der Befehl kann jedoch jeweils eine vollständige Nachricht empfangen und drucken (und ich habe auch keine Kontrolle über diesen Befehl).
Meine Aufgabe ist es, diesen Nachrichtenstrom an einen lokalen Port weiterzuleiten. Eine App, die an diesem Port lauscht, verarbeitet die Nachrichten weiter. Hier ist das Problem: Ich muss einen Empfangspuffer bei der App einrichten (sagen wir 1024 Bytes) und wie das TCP-Protokoll folgt (wie ausführlich diskutiert)Hier), die Nachrichten werden einfach nicht in ihrer ursprünglichen Form durchgestellt chunk
. Und die Länge der Nachricht ist möglicherweise nicht konstant (wie mein Beispiel unten)
Ich möchte am Anfang und am Ende der vom Befehl ausgegebenen Nachricht jeweils ein Sonderzeichen anhängen, damit diese auf der anderen Seite verarbeitet werden können. Hier ein genaueres Beispiel:
Auf dem Terminal führe ich diesen Befehl aus;
mycommand | tee | netcat localhost 2003
Dieser Befehl empfängt die Nachrichten in ihren ursprünglichen Blöcken und leitet sie an Port 2003 weiter:
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
Wie kann ich die einzelnen Zeilen oben folgendermaßen umbrechen:
<action_1_timestamp_2021_6_09_10_34_23_abort>
bevor es weitergeleitet wird netcat localhost 2003
. Ich bin mit Bash-Skripten nicht sehr vertraut.