shell-脚本集合2

shell-脚本集合2
2012年01月16日
  
  版权声明:原创作品,如需转载,请与作者联系。否则将追究法律责任。
  shell-脚本集合 shell-脚本集合2
  21 监控之检查磁盘 $ cat chk_df.sh
  #!/bin/bash
  #
  #check the disk usage via ssh
  #variables
  let dflimit=90
  crondir="crontab"
  source CONFIG
  #main
  #执行ssh 命令
  for HOST in $ALLHOSTS ;do
  flag_disk_file=$crondir/log/"$HOST".disk
  log=$crondir/log/disk_error.log
  capacity=$(ssh root@$HOST "df" | grep "/dev/" | sed 's/\%//' | awk '{print $5}')
  let flags=0
  #判断ssh命令返回结果
  for used in $capacity ;do
  if [ $used -ge $dflimit ];then
  let flags=1
  break
  fi
  done
  #如果磁盘超过限制,则发送报警邮件
  if [ "$flags" -eq "1" -a ! -f "$flag_disk_file" ];then
  #for mobile in "$MOBILES";do
  #echo "$HOST disk will full" | /usr/local/bin/gammu --sendsms TEXT "$mobile" -unicode
  #done
  echo "$HOST disk will full" | mail -s "$HOST disk will full" $MAILS
  date +'%F %T' >>$log
  echo "$HOST disk will full" >> $log
  echo "disk_error" >$flag_disk_file
  fi
  #如果磁盘正常,则发邮件解除报警邮件
  if [ "$flags" -eq "0" -a -f "$flag_disk_file" ];then
  for mobile in "$MOBILES";do
  echo "$HOST disk ok"|/usr/local/bin/gammu --sendsms TEXT "$mobile" -unicode
  done
  echo "$HOST disk ok" | mail -s "$HOST disk ok" $MAILS
  date +'%F %T' >>$log
  echo "$HOST disk ok" >> $log
  rm -f $flag_disk_file
  fi done
  22 监控之检查系统负载 $ cat chk_load.sh
  #!/bin/bash
  #
  #check the system load through ssh
  #variables
  let loadlimit=3
  sh_dir=/root/sh/
  crondir=${sh_dir}crontab
  log=${crondir}/log/system_load.log
  source ${sh_dir}/CONFIG
  #main
  #执行ssh 命令
  for HOST in $ALLHOSTS ;do
  LOAD=$(ssh root@$HOST "/bin/cat /proc/loadavg" | awk '{print $1}' | awk -F. '{print $1}')
  if [ -z "$LOAD" ];then
  echo "$HOST is null"
  continue
  fi
  #判断ssh命令返回结果
  if [ "$LOAD" -lt "$loadlimit" ];then
  #echo "$HOST load is OK!"
  #如果找到load文件,则发送解除报警邮件
  if [ -f $crondir/log/"$HOST".load ];then
  #for mobile in $MOBILES;do
  # echo "$HOST load ok"|/usr/local/bin/gammu --sendsms TEXT "$mobile" -unicode
  #done
  echo "$HOST load ok" | mail -s "$HOST load ok" $MAILS
  #删除load文件
  rm -f $crondir/log/"$HOST".load
  date +'%F %T' >>$log
  echo "$HOST load ok" >> $log
  fi
  else
  #echo "$HOST is overload!"
  #不能找到load文件,则发送报警邮件
  if [ ! -f $crondir/log/"$HOST".load ];then
  #for mobile in $MOBILES;do
  # echo ""$HOST" overload"|/usr/local/bin/gammu --sendsms TEXT "$mobile" -unicode
  #done
  echo "$HOST overload" | mail -s "$HOST overload" $MAILS
  #生成load文件
  echo "overload" >$crondir/log/"$HOST".load
  date +'%F %T' >>$log
  echo "$HOST overload" >> $log
  fi
  fi done
  26 监控之检查网络(ping) $ cat chk_ping.sh
  #!/bin/bash
  #
  #Use the ping command to check network
  #
  #$ ping -f -c 10 10.0.100.1
  #PING 10.0.100.1 (10.0.100.1) 56(84) bytes of data.
  #.........E
  #--- 10.0.100.1 ping statistics ---
  #10 packets transmitted, 0 received, +3 errors, 100% packet loss, time 120ms
  #, pipe 3
  #$ ping -f -c 10 10.0.100.71
  #PING 10.0.100.71 (10.0.100.71) 56(84) bytes of data.
  #
  #--- 10.0.100.71 ping statistics ---
  #10 packets transmitted, 10 received, 0% packet loss, time 0ms
  #rtt min/avg/max/mdev = 0.003/0.009/0.056/0.015 ms, ipg/ewma 0.029/0.019 ms
  #
  #$ echo $?
  #1 #返回值1
  #
  #variables
  sh_dir=/root/sh/
  crondir=${sh_dir}crontab
  source ${sh_dir}/CONFIG
  DELAY_LIMIT=100
  LOSS_LIMIT=20
  HOSTS="$ALLHOSTS $WEBHOSTS" #main
  #每个ip
  for HOST in $HOSTS ;do
  flag_ping_file="$crondir/log/$HOST.ping"
  flag_ping_fatal="$crondir/log/$HOST.ping.fatal"
  error_log="$crondir/log/ping_error.log"
  #返回值0,定义delay 与 loss 变量
  if ping -f -c 50 $HOST >$crondir/log/ping.log;then
  grep "rtt min" $crondir/log/ping.log >$crondir/log/ping.delay
  grep "packet loss" $crondir/log/ping.log >$crondir/log/ping.loss
  delay=`awk -F= '{print $2}' $crondir/log/ping.delay | awk -F/ '{print $2}'| awk -F. '{print $1}'`
  loss=`awk '{print $6}' $crondir/log/ping.loss | awk -F% '{print $1}'`
  #判断delay 或者loss 大于规定限制,则发送报警邮件
  if [ "$delay" -ge "$DELAY_LIMIT" -o "$loss" -ge "$LOSS_LIMIT" ];then
  if [ ! -f $flag_ping_file ];then
  #for mobile in $MOBILES;do
  #echo "Monitor to $HOST delay $delay'ms;$loss% packet loss" | /usr/local/bin/gammu --sendsms TEXT "$mobile" -unicode
  #done
  echo "Monitor to $HOST delay $delay'ms;$loss% packet loss" | mail -s "Monitor to $HOST delay $delay'ms;$loss% packet loss" $MAILS
  date +'%F %T' >>$error_log
  cat $crondir/log/ping.log >>$error_log
  #生成用于判断的flag文件
  echo "$HOST network error" >$flag_ping_file
  fi
  fi
  #判断delay 或者loss 小于规定限制,则发送解除报警邮件
  if [ "$delay" -lt "$DELAY_LIMIT" -a "$loss" -lt "$LOSS_LIMIT" -a -f $flag_ping_file ];then
  echo "$HOST network ok" | mail -s "$HOST network ok" $MAILS
  rm -f $flag_ping_file
  if [ -f $flag_ping_fatal ];then
  #for mobile in $MOBILES;do
  #echo "$HOST network ok"|/usr/local/bin/gammu --sendsms TEXT "$mobile" -unicode
  #done
  #删除用于判断的flag文件
  rm -f $flag_ping_fatal
  fi
  fi # else
  #返回值1,则直接判断为失败,发送报警邮件
  if [ ! -f $flag_ping_fatal ];then
  #for mobile in $MOBILES;do
  #echo "Monitor to $HOST fatal;100% packet loss" | /usr/local/bin/gammu --sendsms TEXT "$mobile" -unicode
  #done
  echo "Monitor to $HOST fatal;100% packet loss" | mail -s "Monitor to $HOST fatal;100% packet loss" $MAILS
  date +'%F %T' >>$error_log
  cat $crondir/log/ping.log >>$error_log
  echo "$HOST network fatal" >$flag_ping_fatal
  echo "$HOST network error" >$flag_ping_file
  fi fi done
  27 监控之检查mysql 主从状态 $ cat chk_mysql_replicate.sh
  #!/bin/bash
  #
  #check the mysql replicate
  #
  #/usr/local/mysql/bin/mysql -uroot -pdongnan -e 'show slave status\G' -ss | awk '{print $2}' | head -n 13 | tail -n2
  #Yes #Yes # #
  #variables
  let dflimit=90
  sh_dir=/root/sh/
  crondir=${sh_dir}crontab
  source ${sh_dir}/CONFIG
  HOSTS="$DB_SLAVE_HOSTS" #main
  for HOST in $HOSTS;do
  ssh root@$HOST "/usr/local/mysql/bin/mysql -uroot -pdongnan -e 'show slave status\G' -ss" | awk '{print $2}' | head -n 13 | tail -n2 >"${crondir}/log/chk_mysql_replicate.log"
  YN="" #
  while read line;do
  YN="$YN $line"
  #doneerror" | /usr/local/bin/gammu --sendsms TEXT "$mobile" -unicode
  #done
  echo "$HOST replicate error" | mail -s "$HOST replicate error" $MAILS
  echo "replicate error" >"${crondir}/log/$HOST.mysql"
  fi
  fi
  #
  done
  本文出自“dongnan” 博客,转载请与作者联系!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值