shell脚本监控磁盘空间并发送邮件
需求:Ceon7实现shell脚本监控磁盘空间达到指定阈值(80%)时发送邮件至指定邮箱,此处使用的为QQ邮箱
一、安装Mailx
CentOS 7自带mailx软件包, 有/usr/bin/mail命令, 配置文件为/etc/mail.rc
如果没有mailx,安装命令yum install -y mailx
二、修改/etc/mail.rc文件
# smtp服务器认证的用户名
set from=****@qq.com
# smtp服务器的地址
set smtp=smtp.qq.com
# 邮件认证的方式
set smtp-auth=login
# smtp服务器认证的用户名
set smtp-auth-user=****@qq.com
# smtp服务器认证的用户密码(授权码,此处邮箱为POP3/SMTP授权码)
set smtp-auth-password=test_password
# 忽略验证
set ssl-verify=ignore
set nss-config-dir=/etc/maildbs/
三、邮件发送测试
输入以下命令后会等待用户输入邮件正文,使用CTRL+D结束发送邮件
mail -s "邮件主题" 收件人地址
使用echo和管道的方式
echo "邮件正文" | mail -s "邮件主题" 收件人地址
echo "邮件正文" | mail -s "邮件主题" -a 附件 收件地址
四、创建SHEEL脚本
1、创建sh文件
vi mailx2qqmail.sh
2、具体脚本如下(我在这里监控的是首个分区):
#!/bin/bash
#声明数组并赋值。
arr=(`df -h`)
#获得已经使用的空间值,根据不同的分区获取的下标不同,由于获取的值带%,为了方便判断使用%?去掉最后一个字符
use=${arr[11]%?}
#获取当前日期
dt=`date +"%Y-%m-%d %H:%M:%S"`
#判断use的值是否大于规定的阈值
if [ $use -gt 80 ]
then
echo "已经超过80%的阈值,需要及时处理" | mail -s "归档日志报警" ****@qq.com
else
echo "监控的日期为:"$dt" 监控的分区是:"${arr[7]}" 目前已经占用:"${arr[11]} >> /root/mailx/mail2qq.txt
fi
五、通过定时任务定期执行sh文件
1、添加定时任务
crontab -e
2、每天中午12点监控该磁盘空间
0 12 * * * sh /root/mailx2qqmail.sh
3、查看日志文件
cat /root/mailx/mail2qq.txt
结果为:
监控的日期为:2021-05-21 12:00:02 监控的分区是:/dev/mapper/centos-root 目前已经占用:7%
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
