Linux设置邮件提醒

前言

《Linux设置定时任务》一文中,我们学习了使用crontab设置定时任务的方法,并用它来获取ganglia的运行状态。这样还不够,我们想要在ganglia的运行状态出现问题时通知我们,这样,我们就不用每天自己查看日志了。

本文主要参考Ubuntu mail命令发送邮件如何通过Shell脚本实现发送邮件通知功能?

mail基础

安装

1、安装mailutils
sudo apt-get install mailutils

2、General type of mail configuration选择Internet Site。

3、System mail name输入mail.voidking.com。

mail命令

命令格式:
mail [OPTION...] [address...]
常用到的选项,一个是s,代表主题;一个是A,代表附件。其他的需要时查看help。

使用

普通邮件

目标:给邮箱 voidking@qq.com 发送邮件,主题为“Hello VoidKing”,内容为“Welcome to mail world!”

mail -s 'Hello VoidKing' voidking@qq.com
提示Cc,这里不需要抄送,就直接回车。然后输入邮件内容“Welcome to mail world!”,回车,ctrl+D,发送邮件。

但是,等待了几分钟,并没有收到邮件,垃圾箱也没有。
mail,查看email的发送状态为Undelivered Mail Returned,原来没有投递出去。

查看邮件系统日志:tail -n 50 /var/spool/mail/test,提示host mx3.qq.com[183.57.48.35] said: 550 Mail content denied。看来qq邮箱的垃圾邮件防御机制做的不错,那就换个163邮箱,没想到依然失败。

那就换一台服务器!发送给 voidking@qq.com ,成功!很尴尬。。。

普通邮件2

除了上面的方式发送邮件,我们还可以使用:
mail -s 'Hello VoidKing' voidking@qq.com <<< 'Welcome to mail world!'

或者使用:
echo 'Welcome to mail world!' | mail -s "Hello VoidKing" voidking@qq.com

高级邮件

1、从文本读入内容发送邮件
mail -s 'Error report' voidking@qq.com < /tmp/log/ganglia/error-20180524.log

2、发送附件
mail -s 'Error report' voidking@qq.com -A /tmp/log/ganglia/ganglia-20180524.log < /tmp/log/ganglia/error-20180524.log

3、指定发件人
echo 'Welcome to mail world!' | mail -s "Hello VoidKing" voidking@qq.com -aFrom:haojin@qq.com

失败了,收不到邮件,不知道什么原因,留个坑吧。

设置邮件提醒

目标:每天获取一次ganglia的状态日志,然后通过checkganglia.sh脚本进行审阅。审阅完毕,发送审阅结果到管理员的邮箱。

修改checkganglia.sh脚本为:

#!/bin/bash
DATE=`date +%Y%m%d`
filename="ganglia-${DATE}.log"
prefix="ganglia-${DATE}"
hosts=`grep test@ /tmp/log/ganglia/${filename} | wc -l`
pids=`grep gmond.pid /tmp/log/ganglia/${filename} | wc -l`
if [ ${hosts} != 10 ]
then
    echo "Some hosts are offline!" >> /tmp/log/ganglia/error-${DATE}.log
fi

if [ ${hosts} != ${pids} ]
then
    echo "Some ganglia services have stopped!" >> /tmp/log/ganglia/error-${DATE}.log
    cd /tmp/log/ganglia/
    csplit /tmp/log/ganglia/${filename} /test@/ -n2 -s {*} -f ${prefix} -b ".log.%02d"
    rm ${prefix}.log.00
    for file in /tmp/log/ganglia/${prefix}.log.*
    do 
    if [ -f "${file}" ]
    then
        #echo "${file} is file"
        if [ `grep gmond.pid ${file} | wc -l` == 0 ]
        then
            echo `grep test@ ${file}` >> /tmp/log/ganglia/error-${DATE}.log
        fi
    fi
    done
fi

# mail info
if [ ! -f "/tmp/log/ganglia/error-${DATE}.log" ]
then
    mail -s "HappyDay${DATE}" voidking@qq.com <<< "All services are running!"
else
    mail -s "SadDay${DATE}" voidking@qq.com -A /tmp/log/ganglia/ganglia-${DATE}.log < /tmp/log/ganglia/error-${DATE}.log
fi

后记

至此,大功告成!《Linux设置定时任务》配合《Linux设置邮件提醒》,简直完美!两篇文章完成了一个小系统:定时生成ganglia日志,定时审阅ganglia日志,并且把审阅结果通过邮件发送给管理员。

书签

Linux命令大全——LMNOPQ

如何在Ubuntu环境下搭建邮件服务器(一)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,889评论 19 139
  • Python 面向对象Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对...
    顺毛阅读 9,700评论 4 16
  • 我羡慕 人们有爱情,有友情, 有无穷无尽的笑声 散不去的臭汗味 我只有这臭汗里的阳光 耳边响着那男孩喝水时嗦出的声...
    林玲达阅读 1,715评论 0 3
  • 文/北城故事 不知道为什么大家都喜欢某某年最开始的时候,在某一个特定的时点,突然跳出来,在朋友圈,在qq空间,给自...
    北城故事阅读 2,507评论 0 2
  • 买一个锅 煮汤 煮粉 煮粥 煮饭 煮糖水 蒸包子 蒸饺子 汤是: 玉米排骨汤 香菇排骨汤 红枣排骨汤 淮山排骨汤 ...
    木棉白杨阅读 1,400评论 0 0

友情链接更多精彩内容