1.邮件告警
#!/bin/bash
#邮箱自己定义
Mailuser=liujia@huaniupp.com
#你想要达到的阈值
max_num=80
#过滤啊啥的
fdisk_use=`df -P | grep /dev/vda1 | awk '{print $5}' | cut -f 1 -d "%"`
#比较阈值和磁盘使用的大小
if [ "$fdisk_use" -ge "$max_num" ]
then
echo "磁盘的使用超过"$max_num",请快速处理" | mail -s "请快速清理磁盘空间" $Mailuser
else
echo "ok"
fi
优化改良后
#!/bin/bash
#邮箱自己定义
Mailuser=liujia50@gemdale.com
#你想要达到的阈值
max_num=30
ip=`hostname`
#过滤啊啥的
fdisk_use=`df -P | grep /data | awk '{print $5}' | cut -f 1 -d "%"`
#比较阈值和磁盘使用的大小
if [ "$fdisk_use" -ge "$max_num" ]
then
echo "$ip数据磁盘/data磁盘的使用超过"$max_num",请快速处理" | mail -s "请快速清理磁盘空间" $Mailuser
else
echo "ok"
fi
fdisk_use1=`df -P | grep /dev/mapper/centos-root | awk '{print $5}' | cut -f 1 -d "%"`
#比较阈值和磁盘使用的大小
if [ "$fdisk_use1" -ge "$max_num" ]
then
echo "$ip系统磁盘的使用超过"$max_num",请快速处理" | mail -s "请快速清理磁盘空间" $Mailuser
else
echo "ok"
fi
2.邮件告警
-E : 使用拓展正则 等价于 egrep
* 用于拓展正则
普通正则表达式:
^ : 以某字符开头
$ : 以某字符结尾
. : 匹配除换行符之外的任意单个字符
* :匹配前导字符的任意个数
[] : 某组字符串的任意一个字符
[^] : 取反
[a-z] : 匹配小写字母
[A-Z] : 匹配大写字母
[a-zA-Z] : 匹配字母
[0-9] : 匹配数字
\ : 取消转义
() : 分组
\n : 代表第n个分组
#!/bin/bash
WARNING=80
USE=`df | grep '^/dev/vd' |grep -Eo '[0-9]+%' |grep -Eo '[0-9]+' |sort -rn |head -n1`
[ $USE -ge $WARNING ] && echo DISK will be full | mail -s 'Disk Warning' liujia50@gemdale.com