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%


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部