shell脚本:监控多台主机磁盘使用率并进行预警

说明:当有多台主机时,需要对磁盘分区的使用量做预警,防止因为磁盘使用量满了导致服务停用

 

备注:在执行脚本前,需要进行ssh免密交互的操作,也可以使用脚本来实现,参见我上一个博客

 

#说明:hosts.info是一个主机ip,ssh连接用户,ssh端口的三个字段的文件,ip停用可以对文件进行注释

Color="echo -e \033[31m"
End='\033[0m'

#如果不存在该主机清单,就退出脚本
Host_file=/scripts/hosts.info
if [ ! -f $Host_file ];then
	echo "host list file not exist,pls check your directory"
	exit 1
fi


for ip in $(awk '/^[^#]/{print $1}' $Host_file
do
	User=$(awk -v ii="$ip" '$1==ii {print $2}' $Host_file)
	Port=$(awk -v ii="$ip" '$1==ii {print $3}' $Host_file)
	Total_file=/tmp/list.txt
	ssh -p $Port $User@$ip 'df -h' >/tmp/list.txt
	User_rate=$(awk 'BEGIN{OFS="="} /^\/dev/ {print int($5),$NF}' $Total_file)
	for rate in $User_rate
	do
		Mount=${rate#*=}
		Tate=${rate%=*}
		if [ $Tate -gt 80 ];then
            #此处可以使用邮件预警
            #echo -e "$ip disk in dangrous\n $Tate $Mount |mail -s "disk warning" 450776269@qq.com "
			echo -e "Warning:`${Color}`$ip \n$Tate $Mount$End"
		fi
	done

done

 

 

字符串子串的说明:

${parameter}            返回字符串内容
${#parameter}            返回字符串字符长度
${parameter:offset}        在变量中从位置offset之后开始提取字符串
${parameter:offset:length}    在字符串中从offset之后开始截取长度为length的字符
${parameter#word}        变量开头开头删除最短匹配的Word字符
${parameter##word}        变量开头开头删除最长匹配的Word字符
${parameter%word}        变量开头结尾删除最短匹配的Word字符
${parameter%%word}        变量开头结尾删除最短匹配的Word字符
${parameter/pattern/string}    变量使用string代替第一个匹配的pattern
${parameter//pattern/string}    变量使用string代替所有匹配的pattern

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值