Отображать уведомление NotifyOSD из файла журнала

Я использую Snort для системы обнаружения вторжений в реальном времени (IDS), я хочу получать системные уведомления в режиме реального времени каждый раз, когда новый файл записывается в файл журнала. Таким образом, NotifyOSD будет отображать уведомление о журнале для каждого записанного журнала. Я понимаю, используя патч NotifyOSD я могу использовать notify-send "$snort.log",

Тем не менее, это будет печатать все строки в файле журнала, несколько раз. Я мог бы использовать rsyslog или же rsync и записать новую строку во временный файл, который будет очищаться после каждого watch команда побежала, и с watch задержать вывод notify-send "$temp.snort.log, Хотя я чувствую, что это безвозмездно, кроме того, результаты все еще нуждаются в дезинфекции.

Есть ли лучший способ получать уведомления IDS в режиме реального времени с помощью NotifyOSD, чем:

#!/bin/bash
watch -n1 notify-send "$temp.snort.log"
truncate -s 0 "$temp.snort.log"

1 ответ

Решение

Вы можете попробовать:

tail -f "$temp.snort.log" | xargs -d '\n' -L1 notify-send -- 

tail -f сохраняет файл открытым и печатает новые строки по мере их добавления в файл. xargs затем читает каждую строку и запускает notify-send в теме. -- сигнализирует об окончании опций notify-sendтак, чтобы строка начиналась с - не случайно рассматривается как вариант.

Другие вопросы по тегам