免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1493 | 回复: 0
打印 上一主题 下一主题

求更简单的方法重写这个磁盘空间检测的脚本吗? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-12-02 16:25 |只看该作者 |倒序浏览
公司原来的脚本是针对以下这种分区形式的:
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就不能得到正确的结果,所以花了点时间改了一下,但是还是不是很理想,看看哪位大侠能改的更简单一些。

  1. #!/bin/sh
  2. ADMINDIR=/Script_new/
  3. smtpemailfrom="[email=abc@abc.com]abc@abc.com[/email]"
  4. smtpserver="*.*.*.*"
  5. smtplogin=user
  6. smtppass123456"
  7. emailto="[email=it@abc.com]it@abc.com[/email]"

  8. while read ip port
  9. do
  10. {
  11. echo $ip
  12. ssh -f -p ${port} ${ip}  df -h|grep /|tr -s "\n" " "| sed 's/ /\n/g'  > /Script_new/Partion_Check/${ip}.txt
  13. b=0
  14. a=""
  15. while read line ; do
  16.         a=$a" "$line ;  
  17.        let b=$b+1;
  18.       
  19.         if  [  $((b%6))  -eq  0 ]; then
  20.    echo $a  >>  /Script_new/Partion_Check/${ip}_1.txt
  21.       a=""
  22.    let b=0
  23.      fi
  24.      done <  /Script_new/Partion_Check/${ip}.txt
  25. cat /Script_new/Partion_Check/${ip}_1.txt  | awk  '{print $1 "--" $5}' > /Script_new/Partion_Check/${ip}.txt
  26. rm -f    /Script_new/Partion_Check/${ip}_1.txt


  27. partions=`cat /Script_new/Partion_Check/${ip}.txt`
  28. for partion in ${partions}
  29. do
  30. {
  31.   usage=`echo ${partion} | awk -F '--'  '{print $2}'`
  32.   name=`echo ${partion}/ | awk -F '--'  '{print $1}'`
  33.   usagevalue=`echo ${usage} | awk -F '%' '{print $1}'`
  34.   echo $name $usagevalue
  35.   if [ ${usagevalue} -gt 80 ]
  36.   then
  37.   {
  38.    #send sms
  39.    c
  40.    /Script_new/Partion_Check/SMS.sh ${content}
  41.    #send mail ---
  42.    subject="`echo ${ip}`  Partion Usage Alert !!!"
  43.    body=`echo ${content}`
  44.    echo "From: [url=file://\\]\\"XXXX[/url]  IT Support\\" <${smtpemailfrom}>" > /tmp/Partion_Check
  45.    echo "To: ${emailto}" >> /tmp/Partion_Check
  46.    echo "Subject: ${subject}" >> /tmp/Partion_Check
  47.    echo "" >> /tmp/Partion_Check
  48.    echo "" >> /tmp/Partion_Check
  49.    echo "  ${body}" >> /tmp/Partion_Check
  50.    #cat /tmp/Partion_Check
  51.    ${ADMINDIR}/nbsmtp -f ${smtpemailfrom} -h ${smtpserver} -U ${smtplogin} -P ${smtppass} -M {l,p} < /tmp/Partion_Check  2>/tmp/Partion_Check_Alert.log
  52.    rm /tmp/Partion_Check
  53.    # send mail ---
  54.    echo ${content} >> /Script_new/Partion_Check/Check_Log.txt
  55.   }
  56.   else
  57.   {
  58.    c
  59.    echo `date` ${content} >> /Script_new/Partion_Check/Check_Log.txt
  60.   }
  61.   fi
  62.   echo Read Next Partion
  63. }
  64. done
  65. echo Read Next Server
  66. }
  67. echo Read Nest List
  68. done

复制代码



另 变量IP 和PORT是读取自其他文件,文件格式为
IP                   PORT

1.2.3.4            22

[ 本帖最后由 ccjsj2008 于 2009-12-2 16:37 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP