脚本_监视主机磁盘使用情况

需求:

使用脚本监视网络中多台主机磁盘使用情况,如使用率超过80%,标记为ALERT,否则标记为SAFE。

实施:

设置一个共用账户(如monitor),用于脚本登录多台主机使用,并为这个共用账户配置SSH自动登录。

示例脚本内容如下:

#!/bin/bash

#filename:diskusage.sh

#function:monitor disk usage

logfile=”diskusage.log”

if [[ -n $1 ]]

then

 logfile=$1

fi

if [ ! -e $logfile ]

then

 printf “%-8s %-14s %-8s %-8s %-6s %-6s %-6s %s\n” “Date” “IP address” “Device” “Capacity” “Used” “Free” “Percent” “Status” > $logfile

fi

IP_LIST=”172.16.0.120 172.16.0.121″

(

for ip in $IP_LIST;

do

 ssh monitor@$ip ‘df -H’ | grep ^/dev/ > /tmp/$$.df

 while read line;

 do

  cur_date=$(date +%D)

  printf “%-8s %-14s” $cur_date $ip

  echo $line | awk ‘{ printf(“%-9s %-8s %-6s %-6s %-8s”,$1,$2,$3,$4,$5); }’

 pusg=$(echo $line | egrep -o “[0-9]+%”)

  pusg=${pusg/\%/};

  if [ $pusg -lt 80 ];

  then

   echo SAFE

  else

   echo ALERT

  fi

  done < /tmp/$$.df

done

) >> $logfile

脚本运行效果:

说明:

1.脚本也可以提供日志文件路径作为命令行参数,否则脚本使用默认的日志文件diskusage.log,如:

./diskusage.sh logfilename

2.可用crontab定时执行脚本,如每天上午9点运行脚本:

00 09 * * * /path/diskusage.sh

3.示例脚本并未删除临时文件$$.df,若要删除,可在脚本末尾添加rm -rf $$.df

4.示例脚本中只列出两台主机172.16.0.120、172.16.0.121 ,可根据实际情况作相关调整。