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