系统巡检

#!/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 "系统巡检" [email protected]
}
#微信告警
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

系统巡检_第1张图片

你可能感兴趣的:(shell)