Вопрос или проблема
Я играюсь с командой 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
Пошаговая инструкция:
-
Создайте файл: Создайте файл скрипта, например, с именем
syslog-reader.sh
. -
Добавьте код скрипта: Вставьте в файл приведённый выше код.
-
Сделайте файл исполняемым: Выполните команду
chmod a+x syslog-reader.sh
для того, чтобы сделать скрипт исполняемым. -
Запустите скрипт с необходимыми привилегиями: Запустите скрипт командой
sudo ./syslog-reader.sh
.
Объяснение:
Скрипт запускает netcat
в бесконечном цикле, используя опции:
-u
для указания использования UDP,-l
для режима прослушивания,-p 514
для указания номера порта,-w 0
для отключения тайм-аута, что позволяетnc
завершиться сразу после получения данных.
После каждого пакета данных добавляется пустая строка (echo
), что обеспечивает желаемый разрыв между сообщениями.
Это решение предоставляет простой и эффективный подход к организации вывода syslog в читаемом виде прямо в терминале без необходимости сохранять его в файлы.
Заключение:
Использование предложенного подхода позволит вам улучшить читаемость входящих syslog-сообщений путем добавления разрывов строк, что упростит мониторинг и анализ логов в реальном времени. Обращаясь к конкретным потребностям вашего проекта, скрипт может быть легко модифицирован для дальнейшей обработки данных, если потребуется.