Shell编程---监控(本地主机)磁盘使用情况并邮件报警

23 篇文章 2 订阅
18 篇文章 1 订阅
要求:监控(本地主机)磁盘使用情况并邮件报警
分析:
  1. 任何一个分区使用到80%就发送一个邮件/短信通知提醒几个人磁盘的使用情况;
  2. 任何一个分区使用到90%以上就在邮件主题给出警告(warning);
  3. Linux服务器上发送邮件程序我们使用sendmail。
解答:
第1步: 安装并启动sendmail服务并测试
[root@myhost ~]# yum install -y sendmail  mailx
[root@myhost ~]# /bin/systemctl stop sendmail.service 
[root@myhost ~]# ps -ef |grep sendmail
[root@myhost ~]# netstat -lntup |grep 25
[root@myhost ~]# lsof -i:25
[root@myhost ~]# echo "This is test mail" | mail -s 'Test mail' meve@qq.com
第2步:测试查看磁盘使用情况的命令
方法1:
[root@myhost ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1       40G   13G   26G  33% /
devtmpfs        1.9G     0  1.9G   0% /dev
tmpfs           1.8G     0  1.8G   0% /dev/shm
tmpfs           1.8G  428K  1.8G   1% /run
tmpfs           1.8G     0  1.8G   0% /sys/fs/cgroup
tmpfs           354M     0  354M   0% /run/user/0
tmpfs           354M     0  354M   0% /run/user/1004
[root@myhost ~]# df -h|grep -o [0-9]*%
%
33%
0%
0%
1%
0%
0%
0%
[root@myhost ~]# df -h|grep -o [0-9]*%|grep -o '[0-9]\+'
33
0
0
1
0
0
0
方法2:
[root@myhost  ~]# df
Filesystem     1K-blocks     Used Available Use% Mounted on
/dev/xvda1      41152832 12756544  26299188  33% /
devtmpfs         1931300        0   1931300   0% /dev
tmpfs            1809252        0   1809252   0% /dev/shm
tmpfs            1809252      456   1808796   1% /run
tmpfs            1809252        0   1809252   0% /sys/fs/cgroup
tmpfs             361852        0    361852   0% /run/user/0
tmpfs             361852        0    361852   0% /run/user/1004

[root@myhost ~]# df |sed 1d
/dev/xvda1      41152832 12756476  26299256  33% /
devtmpfs         1931300        0   1931300   0% /dev
tmpfs            1809252        0   1809252   0% /dev/shm
tmpfs            1809252      456   1808796   1% /run
tmpfs            1809252        0   1809252   0% /sys/fs/cgroup
tmpfs             361852        0    361852   0% /run/user/0
tmpfs             361852        0    361852   0% /run/user/1004
[root@myhost ~]# df |sed 1d | awk '{print $1,$5}'
/dev/xvda1 33%
devtmpfs 0%
tmpfs 0%
tmpfs 1%
tmpfs 0%
tmpfs 0%
tmpfs 0%
[root@myhost ~]# df |sed 1d | awk '{print $1,$5}'|tr -d %[root@myhost ~]# df -TPh
Filesystem     Type      Size  Used Avail Use% Mounted on
/dev/xvda1     ext3       40G   13G   26G  33% /
devtmpfs       devtmpfs  1.9G     0  1.9G   0% /dev
tmpfs          tmpfs     1.8G     0  1.8G   0% /dev/shm
tmpfs          tmpfs     1.8G  456K  1.8G   1% /run
tmpfs          tmpfs     1.8G     0  1.8G   0% /sys/fs/cgroup
tmpfs          tmpfs     354M     0  354M   0% /run/user/0
tmpfs          tmpfs     354M     0  354M   0% /run/user/1004
[root@myhost ~]# df -TPh|awk '{print $6}'
Use%
33%
0%
0%
1%
0%
0%
0%
[root@myhost ~]# df -TPh|awk '{print +$6}'
0
33
0
0
1
0
0
0
方法3:
[root@myhost ~]# df -TPh
Filesystem     Type      Size  Used Avail Use% Mounted on
/dev/xvda1     ext3       40G   13G   26G  33% /
devtmpfs       devtmpfs  1.9G     0  1.9G   0% /dev
tmpfs          tmpfs     1.8G     0  1.8G   0% /dev/shm
tmpfs          tmpfs     1.8G  456K  1.8G   1% /run
tmpfs          tmpfs     1.8G     0  1.8G   0% /sys/fs/cgroup
tmpfs          tmpfs     354M     0  354M   0% /run/user/0
tmpfs          tmpfs     354M     0  354M   0% /run/user/1004
[root@myhost ~]# df -TPh|awk '{print $6}'
Use%
33%
0%
0%
1%
0%
0%
0%
[root@myhost ~]# df -TPh|awk '{print +$6}'
0
33
0
0
1
0
0
0
#注意$6前的+号,使用算术运算符进行操作时,操作数自动转换为数值
方法4:
[root@myhost ~]# df -Th
Filesystem     Type      Size  Used Avail Use% Mounted on
/dev/xvda1     ext3       40G   13G   26G  33% /
devtmpfs       devtmpfs  1.9G     0  1.9G   0% /dev
tmpfs          tmpfs     1.8G     0  1.8G   0% /dev/shm
tmpfs          tmpfs     1.8G  456K  1.8G   1% /run
tmpfs          tmpfs     1.8G     0  1.8G   0% /sys/fs/cgroup
tmpfs          tmpfs     354M     0  354M   0% /run/user/0
tmpfs          tmpfs     354M     0  354M   0% /run/user/1004
[root@myhost ~]# df -Th|awk -F '[ |%]+' 'NR>1 { print $1 " " $6}'
/dev/xvda1 33
devtmpfs 0
tmpfs 0
tmpfs 1
tmpfs 0
tmpfs 0
tmpfs 0
第3步:编写监控脚本

#!/bin/sh
source /etc/profile

#define variable
usedList=`df -h|grep -o [0-9]*%|grep -o '[0-9]\+'`
emailArray=('meve@qq.com'  'yuki@qq.com')
happenTime=`date  "+%Y-%m-%d  %H:%M:%S" `

for i in ${usedList}
do
	if [ ${i} -ge 80 -a ${i} -le 90 ];then

		for email in ${emailArray[*]}
		do
			echo "NOTICE: Disk space for your server, already used ${i}%, ${happenTime} " | mail -s 'Disk Space Notice'  ${email}
		done
		
	elif [ ${i} -gt  90 ];then
	
		for email in ${emailArray[*]}
		do
			echo "WARNING: Low disk space for your server, already used ${i}%, ${happenTime} " | mail -s 'Disk Space Warning'  ${email}
		done
	
    fi
		
done
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值