shell Linux Bash Alert Script /var/log/message

uplii1fm  于 2023-06-30  发布在  Shell
关注(0)|答案(1)|浏览(108)

我正试图使一个警报脚本,将运行在我的Linux机器上每5分钟我只想有一个输出和已经通过电子邮件发送的数据将不再显示最新的数据

tail -n1 /var/log/message | grep suppress | mail-s 'suppress' test@hotmail.com

在我上面的命令中,它将一遍又一遍地运行相同的数据,直到我收到一个新的抑制警报

kgqe7b3p

kgqe7b3p1#

当您的脚本每5分钟运行一次(可能使用crontab)时,可以使用

find /var/log/message -mmin -5 -exec grep suppress {} \; |
  tail -1 | 
  mail-s 'suppress' test@hotmail.com

编辑:管道为空时如何跳过处理?不要使用管道:

msg=$(find /var/log/message -mmin -5 -exec grep suppress {} \; | tail -1)
test -n "$msg" && 
   echo "$msg" | 
   mail-s 'suppress' test@hotmail.com

编辑2:请注意,当日志中有新的行没有suppress时,你会得到一个旧的suppress行。你需要更多的脚本来解决这个问题(记住找到匹配的行号或匹配的nr和比较),并在/var/log/message文件旋转时找到解决方案。也许你应该做一些像

msg=$(diff /var/log/message /tmp/oldmessages | grep suppress | tail -1)
test -n "$msg" && 
  cp /var/log/message /tmp/oldmessages &&
  echo "$msg" | 
  mail-s 'suppress' test@hotmail.com

相关问题