从日志文件显示 NotifyOSD 通知

从日志文件显示 NotifyOSD 通知

我正在使用 Snort 进行实时入侵检测系统 (IDS),我希望每次将新日志写入日志文件时都能收到实时系统通知。因此,NotifyOSD 会针对每个写入的日志显示日志通知。我理解使用已修补的 NotifyOSD我可以用notify-send "$snort.log"

通知OSD

但是,这将重复打印日志文件中的所有行。我可以使用rsyslogrsync并将最新行写入临时文件,该文件将在每次watch运行命令后被清除,并watch延迟输出notify-send "$temp.snort.log。虽然我觉得这是多余的,但输出仍然需要清理。

有没有比以下更好的方法使用 NotifyOSD 实现实时 IDS 通知:

#!/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,这样以 开头的行-就不会被意外地视为选项。

相关内容