Shell脚本综合案例(Linux篇)

1.监控目标主机状态

监控方法通过ping命令(ICMP协议),如果能ping通,则表示目标主机处于上线状态;反之,则处理下线状态。由于存在网络延迟情况,可能在ping的过程中产生假报警的问题,所以在ping的取值上采用3次报警阈值设置,若3次全部失败,才会报警并产生预警信息。

#!/bin/bash
#Author: zking
#监控目标主机状态
​
ead -p "请输入目标主机的IP地址:" -t 30 ip
fail_count=0
for ((i=1;i<4;i++)) do
    # -c 1表示ping 1次
    if ping -c 1 $ip >/dev/null;then
            #ping_count"$i"=1
            let fail_count=0
            echo "$ip 目标主机能ping通"
            break;
    else
            #ping_count"$i"=0
            let fail_count++
            echo "$ip 目标主机不能ping通"
    fi
    #sleep 0.3
done
echo "失败次数为:$fail_count"
if [ $fail_count -eq 0 ];then
        echo "$ip is up"
else
        echo "$ip is down"
fi

2.监控硬盘的使用率

实时监控硬盘的使用率,并将超过预警值的硬盘信息通过邮件的方式发送出去。

#!/bin/bash
#将系统日期格式化处理
DATE=$(date +%F" "%H:%M)
# 获取ens33的本地IP地址
IP=$(ifconfig ens33 | grep 'inet' | awk 'NR==1{print $2}')
# 定义邮箱地址
#MAIL="[email protected]"
# 获取磁盘盘符大小情况
TOTAL=$(fdisk -l | grep 'Disk /dev/' | awk -F'[: ]' '{print ($2"="$4$5)}')
# 获取/dev/磁盘使用情况
PART_USE=$(df -h | awk '/^\/dev/{print ($1"="int($5)"="$6)}')
for i in $PART_USE; do
        PART=$(echo $i |cut -d"=" -f1)
        USE=$(echo $i |cut -d"=" -f2)
        MOUNT=$(echo $i |cut -d"=" -f3)
        if [ $USE -gt 80 ]; then
                echo "
                      Date: $DATE
                      Host: $IP
                      Total: $TOTAL
                      Problem: $PART=$USE($MOUNT)
                     " 
        fi
done

你可能感兴趣的:(linux,运维,服务器)