我打算将系统日志从我的一台设备/服务器发送到一台 Ubuntu 服务器。
在 Ubuntu 服务器(接收系统日志)上,我希望它在特定系统日志消息到达时触发脚本。
这可能吗?
答案1
问题似乎有所改变,重点是脚本,而不是发送通知。我稍后可能会删除此答案。
似乎是相当简单根据传递给 rsyslog 的消息设置 shell 脚本的实时触发。如果 OP 重写他的答案以更好地描述他的目标(如评论中所述),我愿意在这里提供高质量的答案。
不太清楚你的要求是什么,但我可以推荐一款特定的软件logcheck
。这对你的情况可能也有用。
其目的是在特定匹配(有趣)的行上发送邮件摘要。我假设基本邮件配置已经正常工作(例如,可以工作)。它负责日志轮换,并且知道日志还剩下什么,所以在编写脚本时不必再担心这一点了!echo bla | mail -s testmail [email protected]
从中提取了一些必要的步骤本教程:
配置基本内容
/etc/logcheck/logcheck.conf
:REPORTLEVEL="server" # default reportlevel with pre-configured filters SENDMAILTO="[email protected]"
要检查哪些日志文件
/etc/logcheck/logcheck.logfiles
:/var/log/syslog /var/log/auth.log /var/log/myapp.log
现在,告诉它在特定行上触发,类似于
myapp: Error: Login failed for admin123
对于这个 myapp 日志,可以通过创建一个正则表达式来实现
/etc/logcheck/ignore.d.server/myapp
(注意server
对应于REPORTLEVEL
之前使用的):^myapp:.*
好吧,这不是最具体的正则表达式,但这不是重点。
等待电子邮件到达,例如:
Subject: webserver.domain.tld 2013-01-01 10:17 System Events Jan 01 09:40:59 webserver myapp: IMAP Error: Login failed for gertvdijk