hongblue 发表于 2018-8-24 07:35:26

Bash shell脚本练习(四)

  1.判断磁盘使用空间
  


[*]df -h | grep -v File | sed 's/%//g' | awk '{if($5>80)print"使用空间超过了80%:", $6}'
[*]
[*]或
[*]
[*]#!/bin/bash
[*]#Filename:      disk.sh
[*]#Date:20110322
[*]
[*]DISK_warn=80
[*]DISK_per=`df -h | grep -v Filesystem| awk '{print int($5)}'`
[*]
[*]for i in $DISK_per
[*]do
[*]      if [ "$i" -gt "$DISK_warn" ]; then
[*]                partion=`df -h | grep "$i%"|awk '{print $6}'`
[*]                echo "已使用空间超过80%: $partion"
[*]      fi
[*]done
  

判断磁盘使用百分比是否超过设定值,这里可以修改为通过邮件报警
2.监控CPU的负载情况  


[*]#!/bin/bash
[*]#Filename:cpu_load.sh
[*]#Date:20120322
[*]
[*]LOAD_15=$(uptime | awk '{print $NF}')
[*]CPU_num=$(grep -c 'model name' /proc/cpuinfo)
[*]LOAD_avg=`echo "scale=2;a=$LOAD_15/$CPU_num;if(length(a)==scale(a))print 0;print a"|bc`
[*]INT_avg=`echo $LOAD_avg |cut -f 1 -d "."`
[*]LOAD_warn=0.70
[*]
[*]if (($INT_avg > 0)); then
[*]
[*]      echo "当前服务器15分钟的平均负载为$LOAD_avg,超过警戒值1.0,请立即处理"
[*]
[*]else
[*]      LOAD_now=`expr $LOAD_avg \> $LOAD_warn`
[*]      if (($LOAD_now == 1)); then
[*]                echo "当前服务器15分钟的平均负载为$LOAD_avg,超过警戒值0.70,请及时处理。"
[*]      fi
[*]fi
  

判断cpu负载情况,就否超出设定值。
3.监控SWAP使用情况  


[*]#!/bin/bash
[*]#Filename:swap.sh
[*]#Date:20120322
[*]TOTAL=$(free -m | grep "Swap:" | awk '{print $2}')
[*]USED=$(FREE=$(free -m | grep "Swap:" | awk '{print $3}'))
[*]FREE=$(free -m | grep "Swap:" | awk '{print $4}')
[*]
[*]
[*]SWAP_per=$(expr $FREE \* 100 / $TOTAL)
[*]SWAP_warn=50
[*]
[*]if [ $SWAP_per -lt $SWAP_warn ]; then
[*]      echo "当前服务器SWAP空间可用为:$FREE M,剩余不足50%."
[*]fi
  

判断swap使用百分比是否超过设定值,这里可以修改为通过邮件报警
4.使用curl判断网站是否能正常访问  


[*]#!/bin/bash
[*]#Filename:      web.sh
[*]#Date:20110322
[*]
[*]url=${1?"请输入检测的url地址"}
[*]Status=$(curl -s --head $url | awk '/HTTP/{print $2}')
[*][ -z $Status ] && Status=400
[*]if [ "$Status" -eq 200 ]; then
[*]      echo "$url能正常访问"
[*]else
[*]      echo "$url不能访问,请检查!"
[*]fi
  

PS:
.可以实现通过调用飞信API接口实现短信提示
API接口:http://sms.api.bz/fetion.php?username=13800138000&password=123456&sendto=13912345678&message=短信内容
.
以上shell脚本可通过配合crontab实现自动监控。

页: [1]
查看完整版本: Bash shell脚本练习(四)