关于shell:系统巡检

3次阅读

共计 3676 个字符,预计需要花费 10 分钟才能阅读完成。

#!/bin/bash
#获取主机信息
function sys_info(){
    #主机名
    HOST=`hostname`
    #以后零碎工夫
    DATE=`date "+%Y/%m/%d-%H:%M:%S"`
    #零碎 IP
     #零碎本地 IP
     IP_ON=`ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:"`
     #零碎外网 IP
     IP_IN=`curl whatismyip.akamai.com`

    #内存信息
     #物理内存
        #内存总量
        MEM_TOTAL=`free -m | grep Mem | awk '{print $2}'`
        #已应用内存
        MEM_USED=`free -m | grep Mem | awk '{print $3}'`
        #残余内存
        MEN_FREE=`free -m | grep Mem | awk '{print $4}'`
        MEN_BUFF_CACHE=`free -m | grep Mem | awk '{print $6}'`
        MEN_REALFREE=$[$MEN_FREE+$MEN_BUFF_CACHE]

     #Swap 内存
        #Swap 总量
        Swap_TOTAL=`free -m | grep Swap | awk '{print $2}'`
        #已应用内存
        Swap_USED=`free -m | grep Swap | awk '{print $3}'`
        #残余内存
        Swap_FREE=`free -m | grep Swap | awk '{print $4}'`

    #磁盘信息
     #硬盘挂载设施 (/dev/vda1)
        DISK_MOUNTING=`df -Ph |grep /dev/vda1|awk '{print $1}'`
     #硬盘总容量
        DISK_TOTAL=`df -Ph |grep /dev/vda1|awk '{print $2}'`
     #硬盘已应用
        DISK_USED=`df -Ph |grep /dev/vda1|awk '{print $3}'`
     #硬盘残余空间
        DISK_FREE=`df -Ph |grep /dev/vda1|awk '{print $4}'`
     #硬盘使用率
        DISK_PERCENTAGE=`df -Ph |grep /dev/vda1|awk '{print $5}'`
     #硬盘挂载目录
        DISK_HOME=`df -Ph |grep /dev/vda1|awk '{print $6}'`

    #CPU 信息
    #脚本性能形容:根据 /proc/stat 文件获取并计算 CPU 使用率
    #CPU 工夫计算公式:CPU_TIME=user+system+nice+idle+iowait+irq+softirq
    #CPU 使用率计算公式:cpu_usage=(idle2-idle1)/(cpu2-cpu1)*100
    #默认工夫距离
        TIME_INTERVAL=5
        time=$(date "+%Y-%m-%d %H:%M:%S")
        LAST_CPU_INFO=$(cat /proc/stat | grep -w cpu | awk '{print $2,$3,$4,$5,$6,$7,$8}')
        LAST_SYS_IDLE=$(echo $LAST_CPU_INFO | awk '{print $4}')
        LAST_TOTAL_CPU_T=$(echo $LAST_CPU_INFO | awk '{print $1+$2+$3+$4+$5+$6+$7}')
        sleep ${TIME_INTERVAL}
        NEXT_CPU_INFO=$(cat /proc/stat | grep -w cpu | awk '{print $2,$3,$4,$5,$6,$7,$8}')
        NEXT_SYS_IDLE=$(echo $NEXT_CPU_INFO | awk '{print $4}')
        NEXT_TOTAL_CPU_T=$(echo $NEXT_CPU_INFO | awk '{print $1+$2+$3+$4+$5+$6+$7}')
    #零碎闲暇工夫
        SYSTEM_IDLE=`echo ${NEXT_SYS_IDLE} ${LAST_SYS_IDLE} | awk '{print $1-$2}'`
    #CPU 总工夫
        TOTAL_TIME=`echo ${NEXT_TOTAL_CPU_T} ${LAST_TOTAL_CPU_T} | awk '{print $1-$2}'`
    #CPU 使用率
        CPU_USAGE=`echo ${SYSTEM_IDLE} ${TOTAL_TIME} | awk '{printf"%.2f", 100-$1/$2*100}'`
}
#邮件告警
function sys_mail(){
    #发送告警
    #定义变量
    sys_msg="---------------- 零碎巡逻 ----------------"
    sys_hostname="\n\t 主机名 \t=\t${HOST}"
    #sys_info="\n 零碎信息 \t=\t${SYS}"
    sys_time="\n\t 零碎工夫 \t=\t${DATE}"
    sys_ip="\n\t 本地 IP:\t${IP_ON}\t\n\t 外网 IP:${IP_IN}"
    sys_msg2="\n----------------CPU 信息 ----------------"
    sys_cpu="\n\tCPU 使用率 \t=\t${CPU_USAGE}%"
    sys_mem="\n---------------- 内存信息 ----------------\n 物理内存总量:${MEM_TOTAL}MB\n\t    已用:${MEM_USED}MB\n\t    残余:${MEN_REALFREE}MB\n\tSwap 内存总量:${Swap_TOTAL}MB\n\t    已用:${Swap_USED}MB\n\t    残余:${Swap_FREE}MB"
    sys_disk="\n---------------- 硬盘信息 ----------------\n 硬盘挂载:${DISK_MOUNTING}\n\t 总容量:${DISK_TOTAL}\n\t 已用:${DISK_USED}\n\t 残余:${DISK_FREE}\n\t 利用率:${DISK_PERCENTAGE}\n\t 挂载目录:${DISK_HOME}"
    sys_hang="\n-------------------end--------------------"
    #拼接变量
    echo -e "$sys_msg $sys_hostname $sys_time $sys_ip $sys_msg2 $sys_cpu $sys_mem $sys_disk $sys_hang" | mail -s "零碎巡检" xxxxxxx@qq.com
}
#微信告警
function sys_wechat(){
    # 微信接口
    CropID='xxxxxxx'
    Secret='xxxxxxx'
    GURL="https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$CropID&corpsecret=$Secret"
    Gtoken=$(/usr/bin/curl -s -G $GURL | awk -F\"'{print $10}')
    PURL="https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=$Gtoken"
    To_User="xxxxxxx"
    To_Party="1"
    Agent_ID="1000002"
    /usr/bin/curl --data-ascii '{"touser":"'${To_User}'","toparty":"'${To_Party}'","msgtype":"text","agentid":"'${Agent_ID}'","text": {"content":"'--------------- 日常巡检 ---------------'' 获取工夫:${DATE}'
'主机名称:${HOST}'
'近程地址:${IP_IN}'
'内网地址:${IP_ON}'
'--------------- 内存状况 ---------------'
'物理内存容量:${MEM_TOTAL}MB'
'已用:${MEM_USED}MB'
'残余:${MEN_REALFREE}MB'
'Swap 内存容量:${Swap_TOTAL}MB'
'已用:${Swap_USED}MB'
'残余:${Swap_FREE}MB'
'--------------- 硬盘信息 ---------------'
'硬盘挂载:${DISK_MOUNTING}'
'总容量:${DISK_TOTAL}'
'已用:${DISK_USED}'
'残余:${DISK_FREE}'
'利用率:${DISK_PERCENTAGE}'
'挂载目录:${DISK_HOME}'
'---------------CPU 信息 ---------------'
'CPU 利用率:${CPU_USAGE} %'
'-----------------END------------------'"},"safe":"0"}' $PURL
}
sys_info
sys_mail
sys_wechat

正文完
 0