我正在使用 Snort 进行实时入侵检测系统 (IDS),我希望每次将新日志写入日志文件时都能收到实时系统通知。因此,NotifyOSD 会针对每个写入的日志显示日志通知。我理解使用已修补的 NotifyOSD我可以用notify-send "$snort.log"
。
但是,这将重复打印日志文件中的所有行。我可以使用rsyslog
或rsync
并将最新行写入临时文件,该文件将在每次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
,这样以 开头的行-
就不会被意外地视为选项。