监视日志文件中的关键字,然后发送电子邮件通知

时间:2019-05-10 02:26:52

标签: linux shell awk

我想监视不断生成的日志,以寻找关键字让我知道某个组件是否关闭。确定了关键字后,我想通过电子邮件通知我的个人gmail。

到目前为止,我已经能够分别完成关键字监视和电子邮件通知,但从未在脚本中一起完成。我已经尝试了以下方法进行监视:

tail -fn0 user | awk '/disconnect_tcp_conn/ { print | "echo server down" }'

然后发送至电子邮件:

mail -s "server down.... again" blahblah@gmail.com < /dev/null

我尝试使用grep进行监视,但是awk似乎效果最好。.至少对于我的使用方式。似乎无法正确理解语法以同时使它们同时工作。

我尝试过:

tail -fn0 user | awk '
                    /disconnect_tcp_conn/ { print | "echo server down") }
                    /disconnect_tcp_conn/ { system( "mail -s "server down.... again" blahblah@gmail.com < /dev/null ") }'

还有:

tail -fn0 user | awk '
                    /disconnect_tcp_conn/ { print | "echo server down") }
                    /disconnect_tcp_conn/ { cmd=mail -s "server down.... again3" blahblah@gmail.com < /dev/null ") }'

任何帮助都会很棒。谢谢!

2 个答案:

答案 0 :(得分:0)

{action}中可以有多行,并且可以转义要通过\"传递的双引号system()

tail -fn0 user | awk '/disconnect_tcp_conn/ { 
    system("mail -s \"server down... again\" blahblah@gmail.com </dev/null") 
    print "server down... again"
    exit
}'

答案 1 :(得分:0)

也可以按照以下步骤简单地完成:

tail -f /path/to/file | while read line
do case "$line" in
        *"server down"*) echo "$line" | mutt -s "Server Down" an_email@mail.com;
        ;;
   esac
done