- 论坛徽章:
- 0
|
公司原来的脚本是针对以下这种分区形式的:
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 132G 75G 51G 60% /
/dev/sda1 1012M 41M 920M 5% /boot
/dev/sdc1 1.8T 261G 1.4T 16% /data
none 1014M 0 1014M 0% /dev/shm
/dev/sdb1 269G 200G 56G 79% /opt
查出如果某一分区的使用情况达85%以上,就发送短信和邮件报警,当时的脚本使用awk取 $1 $5就可以了
但是现在因为使用的LVM,所以出现以下的分区形式:
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
273G 199G 61G 77% /
/dev/sda1 99M 13M 81M 14% /boot
none 2.0G 0 2.0G 0% /dev/shm
这样一来,就产生了问题,可以看到/dev/mapper/VolGroup00-LogVol00是自己一行,而下面的那一行,是以空除去Filesystem列以外的其他几列,用awk 取$1 和$5就不能得到正确的结果,所以花了点时间改了一下,但是还是不是很理想,看看哪位大侠能改的更简单一些。
- #!/bin/sh
- ADMINDIR=/Script_new/
- smtpemailfrom="[email=abc@abc.com]abc@abc.com[/email]"
- smtpserver="*.*.*.*"
- smtplogin=user
- smtppass123456"
- emailto="[email=it@abc.com]it@abc.com[/email]"
- while read ip port
- do
- {
- echo $ip
- ssh -f -p ${port} ${ip} df -h|grep /|tr -s "\n" " "| sed 's/ /\n/g' > /Script_new/Partion_Check/${ip}.txt
- b=0
- a=""
- while read line ; do
- a=$a" "$line ;
- let b=$b+1;
-
- if [ $((b%6)) -eq 0 ]; then
- echo $a >> /Script_new/Partion_Check/${ip}_1.txt
- a=""
- let b=0
- fi
- done < /Script_new/Partion_Check/${ip}.txt
- cat /Script_new/Partion_Check/${ip}_1.txt | awk '{print $1 "--" $5}' > /Script_new/Partion_Check/${ip}.txt
- rm -f /Script_new/Partion_Check/${ip}_1.txt
- partions=`cat /Script_new/Partion_Check/${ip}.txt`
- for partion in ${partions}
- do
- {
- usage=`echo ${partion} | awk -F '--' '{print $2}'`
- name=`echo ${partion}/ | awk -F '--' '{print $1}'`
- usagevalue=`echo ${usage} | awk -F '%' '{print $1}'`
- echo $name $usagevalue
- if [ ${usagevalue} -gt 80 ]
- then
- {
- #send sms
- c
- /Script_new/Partion_Check/SMS.sh ${content}
- #send mail ---
- subject="`echo ${ip}` Partion Usage Alert !!!"
- body=`echo ${content}`
- echo "From: [url=file://\\]\\"XXXX[/url] IT Support\\" <${smtpemailfrom}>" > /tmp/Partion_Check
- echo "To: ${emailto}" >> /tmp/Partion_Check
- echo "Subject: ${subject}" >> /tmp/Partion_Check
- echo "" >> /tmp/Partion_Check
- echo "" >> /tmp/Partion_Check
- echo " ${body}" >> /tmp/Partion_Check
- #cat /tmp/Partion_Check
- ${ADMINDIR}/nbsmtp -f ${smtpemailfrom} -h ${smtpserver} -U ${smtplogin} -P ${smtppass} -M {l,p} < /tmp/Partion_Check 2>/tmp/Partion_Check_Alert.log
- rm /tmp/Partion_Check
- # send mail ---
- echo ${content} >> /Script_new/Partion_Check/Check_Log.txt
- }
- else
- {
- c
- echo `date` ${content} >> /Script_new/Partion_Check/Check_Log.txt
- }
- fi
- echo Read Next Partion
- }
- done
- echo Read Next Server
- }
- echo Read Nest List
- done
复制代码
另 变量IP 和PORT是读取自其他文件,文件格式为
IP PORT
1.2.3.4 22
[ 本帖最后由 ccjsj2008 于 2009-12-2 16:37 编辑 ] |
|