Обработка потока в реальном времени с помощью Netcat

Я пытаюсь обработать поток электронной почты в реальном времени и знаком с BASH.

Я использую netcat для прослушивания потока. Электронные письма возвращаются в формате JSON, а новые электронные письма обозначаются символом возврата каретки.

Я пытаюсь понять, как писать каждое электронное письмо в свой уникальный файл. Оттуда я могу обрабатывать JSON в соответствии со своими потребностями.

Несколько человек, с которыми я разговаривал, сказали, что мне «не следует использовать BASH для этой цели, но я, вероятно, смогу заставить его работать». Жду отзывов от других.

Но также я надеюсь, что кто-нибудь поможет мне использовать nc для вывода в файл при каждом возврате каретки.

Спасибо

**** Пример ****

nc localhost 123

откроет поток и начнет слушать

Возвращаемая информация выглядит так:

"to\":\"[email protected]\",\"x-connecting-ip\":\"12.12.12.12\",\"subject\":\"[Test Email] Email to fax=ABCDE_1234B1234\"

Новые электронные письма разделяются символом возврата каретки. Я хочу записать каждое из этих писем в уникальный файл и продолжать слушать поток.


person BeMy Friend    schedule 19.01.2015    source источник
comment
Значит, это не JSON? По крайней мере, на вашем примере это не так. Можете ли вы опубликовать pastebin с немного большим примером входных данных (по крайней мере, 3 или 4 письма)?   -  person Jim Nutt    schedule 19.01.2015


Ответы (1)


Самый простой способ сделать это - использовать команду "split"

nc localhost 123 | split -l 1

Это создаст по 1 файлу на строку с именами «xaa», «xab», «xac» и т. д. Проверьте раздельную справочную страницу для получения дополнительных опций.

person Jim Nutt    schedule 19.01.2015
comment
ДА! Можете ли вы помочь мне понять это? Почему файлы записываются как xab, xaa и т. д.? Я бы предпочел установить их как переменную: date +%b%d%y%H%M%S Я ничего не вижу об этом на странице руководства. - person BeMy Friend; 20.01.2015
comment
Они записываются как xaa,xab... потому что вы читаете стандартный ввод, а имени файла нет, поэтому он просто использует X. Нет возможности изменить суффикс, хотя вы можете добавить дополнительный суффикс с --additional -suffix=$(date +%b%d%y%H%M%S), но файл по-прежнему будет называться x с двухбуквенным суффиксом в дополнение к вашему. Затем вы можете использовать другой сценарий оболочки, чтобы переименовать его так, как вы хотите, это абсолютно необходимо. - person Jim Nutt; 20.01.2015