#!/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

**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。