Netcat listener: Разрыв строки между сообщениями syslog

Вопрос или проблема

Я играюсь с командой netcat. На этой системе Linux я настроил прослушиватель netcat на UDP 514, чтобы видеть syslog-сообщения с удаленных систем.

$ sudo nc -v -ulp 514
listening on [::]:514 ...
connect to 192.168.20.252:514 from (null) ([::ffff:192.168.20.5]:58904)
<45>60: *Mar  5 19:57:06.735: %SYS-5-CONFIG_I: Configured from console by console<45>61: *Mar  5 19:57:32.651: %SYS-5-CONFIG_I: Configured from console by console<45>62: *Mar  5 20:10:10.127: %SYS-5-CONFIG_I: Configured from console by console

Логи поступают, но между событиями нет разрывов строк. Мне нужен разрыв строки между событиями. Вывода на терминал достаточно, и нет необходимости хранить логи. Как этого достичь, если логи не единообразны?

Я думаю, что не получится сделать это однострочником, но простенький bash-скрипт может выполнить задачу. Для меня следующий скрипт работает:

#!/bin/bash
while [ true ]; 
do 
    nc -ulp 514 -w 0
    echo
done

Поместите его в файл syslog-reader.sh, сделайте исполняемым с помощью chmod a+x syslog-reader.sh и запустите с $ sudo syslog-reader.sh.

Ответ или решение

Конечно, давайте разберём заданный вопрос в контексте использования утилиты netcat для прослушивания UDP-порта 514 и получения сообщений syslog на Linux-системе.

Формулировка проблемы:

Вы настроили netcat для прослушивания порта 514, который используется для получения syslog-сообщений с удалённых систем. Проблема состоит в том, что сообщения поступают в терминал в непрерывном формате, без разрыва строк между событиями. Это затрудняет чтение и анализ логов.

Решение:

Чтобы добиться желаемого вывода с разрывами строк между сообщениями, вы можете воспользоваться простым bash-скриптом. Он будет запускать netcat в цикле, и добавлять разрыв строк после каждого принятых данных. Вот пример такого скрипта:

#!/bin/bash

while true; 
do 
    nc -ulp 514 -w 0
    echo
done

Пошаговая инструкция:

  1. Создайте файл: Создайте файл скрипта, например, с именем syslog-reader.sh.

  2. Добавьте код скрипта: Вставьте в файл приведённый выше код.

  3. Сделайте файл исполняемым: Выполните команду chmod a+x syslog-reader.sh для того, чтобы сделать скрипт исполняемым.

  4. Запустите скрипт с необходимыми привилегиями: Запустите скрипт командой sudo ./syslog-reader.sh.

Объяснение:

Скрипт запускает netcat в бесконечном цикле, используя опции:

  • -u для указания использования UDP,
  • -l для режима прослушивания,
  • -p 514 для указания номера порта,
  • -w 0 для отключения тайм-аута, что позволяет nc завершиться сразу после получения данных.

После каждого пакета данных добавляется пустая строка (echo), что обеспечивает желаемый разрыв между сообщениями.

Это решение предоставляет простой и эффективный подход к организации вывода syslog в читаемом виде прямо в терминале без необходимости сохранять его в файлы.

Заключение:

Использование предложенного подхода позволит вам улучшить читаемость входящих syslog-сообщений путем добавления разрывов строк, что упростит мониторинг и анализ логов в реальном времени. Обращаясь к конкретным потребностям вашего проекта, скрипт может быть легко модифицирован для дальнейшей обработки данных, если потребуется.

Оцените материал
Добавить комментарий

Капча загружается...