最近想要监控系统服务运行情况并实现自动发送邮件报警,zabbix虽然也可以实现这样的功能,但是这里使用一个非常简单的办法就可以实现。需要安装mailx工具,mailx是一个小型的邮件发送程序。
安装步骤
第一步:安装mailx
[root@ken ~]# yum install mailx -y
第二步:编辑配置文件
在mail.rc这个配置文件中,在末行添加如下的内容
[root@ken ~]# vim /etc/mail.rc set from="1614833188@qq.com" #这个和第三行邮箱地址需要保持一致 set smtp="smtp.qq.com" set smtp-auth-user="1614833188@qq.com" set smtp-auth-password="xxxxxx" #邮箱授权码 set smtp-auth="login"
说明
from:对方收到邮件时显示的发件人
smtp:指定第三方发邮件的smtp服务器地址
set smtp-auth-user:第三方发邮件的用户名
set smtp-auth-password:用户名对应的密码,有些邮箱填的是授权码
smtp-auth:SMTP的认证方式,默认是login,也可以改成CRAM-MD5或PLAIN方式
授权码获取
第一步:授权码获取
登录qq邮箱,点击设置>账户
点击生成授权码即可
测试
这句命令的后面的1614833188@qq.com是收件地址
[root@ken ~]# echo "这是一封测试邮件" | mail -s "测试邮件" 1614833188@qq.com
以上已经实现了发邮件功能!!!
邮件发送书写格式
1) 无邮件正文
mail -s "主题" 收件地址
实例: mail -s "测试" 1614833188@qq.com
2) 有邮件正文
- mail -s "主题" 收件地址< 文件(邮件正文.txt)
实例: mail -s "邮件主题" 1614833188@qq.com < /data.txt
- echo "邮件正文" | mail -s 邮件主题 收件地址
实例: echo "邮件正文内容" | mail -s "邮件主题" 1614833188@qq.com
- cat 邮件正文.txt | mail -s 邮件主题 收件地址
实例: cat /data.txt | mail -s "邮件主题" 1614833188@qq.com
3) 带附件
- echo "邮件正文" | mail -s "主题" -a 附件 收件地址
实例: echo "邮件正文" | mail -s "邮件主题" -a /etc/passwd 1614833188@qq.com
实战案例
需求:
1. 检测本机web服务
2. 如果web服务宕机发送邮件报警通知管理员
第一步:编辑检测脚本
#!/bin/bash while true do num=`ss -tl | grep -c http` if [ $num -eq 0 ];then echo "web服务宕机,请立即检查修复!" | mail -s "web服务宕机" 1614833188@qq.com break fi done
第二步:后台运行脚本
[root@ken ~]# nohup bash test.sh & [1] 6643 [root@ken ~]# jobs [1]+ Running nohup bash test.sh &
第三步:模拟web服务宕机
[root@ken ~]# systemctl stop httpd
第四步:检查邮件