《Linux设置定时任务》 一文中,我们学习了使用crontab设置定时任务的方法,并用它来获取ganglia的运行状态。这样还不够,我们想要在ganglia的运行状态出现问题时通知我们,这样,我们就不用每天自己查看日志了。
成都创新互联-成都网站建设公司,专注网站设计制作、网站设计、网站营销推广,域名注册,虚拟主机,网站托管维护有关企业网站制作方案、改版、费用等问题,请联系成都创新互联。
本文主要参考 Ubuntu mail命令发送邮件 和 如何通过Shell脚本实现发送邮件通知功能? 。
1、安装mailutils
sudo apt-get install mailutils
2、General type of mail configuration选择Internet Site。
3、System mail name输入mail.voidking.com。
命令格式:
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 ,成功!很尴尬。。。
除了上面的方式发送邮件,我们还可以使用:
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脚本为:
至此,大功告成! 《Linux设置定时任务》 配合 《Linux设置邮件提醒》 ,简直完美!两篇文章完成了一个小系统:定时生成ganglia日志,定时审阅ganglia日志,并且把审阅结果通过邮件发送给管理员。
Linux命令大全——LMNOPQ
如何在Ubuntu环境下搭建邮件服务器(一)
笔者做过做过使用python发送邮件- Python使用yagmail库发送邮件 ,那么在不同平台都可以完成一些监控报警功能。但是在linux平台下,如果脚本是shell实现的,可以调用python脚本,也可以直接使用shell来发送。
1、按照mailx软件包, 安装后在/usr/bin/mail
sudo yum install mailx -y
2、修改配置文件/etc/mail.rc
直接修改配置文件vim /etc/mail.rc, 在最后追加下面的配置,笔者使用的是163邮箱。需要注意的是,需要进入邮箱开启SMTP服务,然后得到一个授权码,用于登录第三方邮件客户端的专用密码。smtp-auth-password即为授权码,而不是邮箱地方密码。
3、发送邮箱测试
命令行输入: echo "测试邮件" | mail -s "邮件主题" -a ./myshells/clear_buffcache.sh ***@qq.com 。-s添加邮箱主题,并添加附件后将邮箱内容一起发送给***@qq.com 。邮箱里面立马就可以收到了。
也可以使用文件内容进行邮件发送:mail -s "邮件主题" 收件地址 mail.txt 。
也可以在命令行输入邮箱内容:mail -s "邮件主题" 收件地址 ,输入完这行命令后回车,会进入邮件正文的编写,可以输入任何文字。当邮件正文输入完成后,需要按CTRL+D结束输入后发送。
如果发送失败,咋命令行会提示错误: message not sent,并会在用户目录下的dead.letter里面显示具体信息。
系统收到的mail会保存在/var/spool/mail/用户名 这个文件夹中。
收mail,键入mail就会显示当前用户的前20封mail。可对邮件进行查看删除等操作。
在linux文本命令平台输入 mail -f mbox,就可以看到当前目录下的mbox中的邮件了。
cd 改变当前所在文件夹的位置,读信时,按一次Ctrl+C,退出阅读状态。
有时候在服务器递交了一个或多个任务,然后把电脑关了,但是又想任务运行完后尽快知道。
这就可以用到mail命令给自己发邮件,首先在递交任务时指定特定的任命名标签 flag ,然后使用 qstat 命令去监测这个flag是否存在。如果存在则继续监测,如果不存在,则说明已经完成,给自己发个邮件提醒。
在 .bashrc 里面定义函数实现这个功能:
然后打开一个终端就可以直接用了。
mail -s "Hello from linuxde.net by shell" admin@linuxde.net
hello,this is the content of mail.
welcome to
第一行是输入的命令,-s表示邮件的主题,后面的admin@linuxde.net则是邮件的接收人,输入完这行命令后回车,会进入邮件正文的编写,我们可以输入任何文字,比如上面的两行。当邮件正文输入完成后,需要按CTRL+D结束输入,此时会提示你输入Cc地址,即邮件抄送地址,没有直接回车就完成了邮件的发送。