
Мне нужно запустить команду в терминале, чтобы непрерывно получать входящие сообщения из других мест сети. Я не могу контролировать формулировку длины сообщения. Однако команда может получать и печатать одно полное сообщение за раз (и я также не могу контролировать эту команду).
Моя задача — переслать этот поток сообщений на локальный порт. Приложение, прослушивающее этот порт, будет далее обрабатывать сообщения. Вот в чем проблема: мне нужно установить буфер приема в приложении (скажем, 1024 байта) и, как следует из протокола TCP (как это широко обсуждалосьздесь), сообщения просто проходят не в своем оригинале chunk
. И длина сообщения может быть непостоянной (как мой пример ниже)
Я хочу добавить один специальный символ в начале и в конце сообщения, которое выдает команда, чтобы обработать их на другой стороне. Вот более конкретный пример:
На терминале я запускаю эту команду;
mycommand | tee | netcat localhost 2003
Эта команда получает сообщения в их исходных фрагментах и пересылает их на порт 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
Как мне обернуть каждую строку выше следующим образом:
<action_1_timestamp_2021_6_09_10_34_23_abort>
до того, как он будет передан netcat localhost 2003
. Я не очень хорошо знаком с bash-скриптингом.