说明:当有多台主机时,需要对磁盘分区的使用量做预警,防止因为磁盘使用量满了导致服务停用
备注:在执行脚本前,需要进行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