![当给定的系统日志消息到达 UDP 端口时如何执行操作](https://linux22.com/image/518628/%E5%BD%93%E7%BB%99%E5%AE%9A%E7%9A%84%E7%B3%BB%E7%BB%9F%E6%97%A5%E5%BF%97%E6%B6%88%E6%81%AF%E5%88%B0%E8%BE%BE%20UDP%20%E7%AB%AF%E5%8F%A3%E6%97%B6%E5%A6%82%E4%BD%95%E6%89%A7%E8%A1%8C%E6%93%8D%E4%BD%9C.png)
当特定消息(例如匹配正则表达式)到达 UDP 端口(系统日志格式)时,我需要执行给定的操作。如何执行此操作(即使用已有的软件而不是手动编写)?
答案1
也许你应该看看rsyslog。它的语法比 syslogd 更灵活、更简单。总体而言,功能也更强大。
无论如何,你在 rsyslog 中想要的是
if ( regex ) then action
& another_action # This line could be ignored if you want only one action
答案2
Syslog-ng 可以用类似如下的方式实现这一点:
destination d_special { program("/usr/local/bin/script"); };
filter f_special { match("regex"); };
log { source (s_all); filter(f_special); destination(d_special); };
答案3
我猜此链接至 logwatch 手册页将会很有用。
答案4
您可以使用操作系统安全评估中心观察具体模式,并使用积极响应功能来执行您想要的操作。