1.获取服务器资源
#!/bin/bash
#获取主机名
system_hostname=$(hostname | awk '{print $1}')
#获取服务器IP
system_ip=$(ifconfig eth0 |awk -F '[ :]+' 'NR==2{print $3}')
#获取总内存
mem_total=$(free -m | grep Mem| awk -F " " '{print $2}')
#获取剩余内存
mem_free=$(free -m | grep "Mem" | awk '{print $4+$6}')
#获取已用内存
mem_use=$(free -m | grep Mem| awk -F " " '{print $3}')
#获取当前平均一分钟负载
#load_1=`top -n 1 -b | grep average | awk -F ':' '{print $5}' | sed -e 's/\,//g' | awk -F " " '{print $1}'`
load_1=`w|grep load|awk '{print $(NF-2)}'`
#获取当前平均五分钟负载
#load_5=`top -n 1 -b | grep average | awk -F ':' '{print $5}' | sed -e 's/\,//g' | awk -F " " '{print $2}'`
load_5=`w|grep load|awk '{print $(NF-1)}'`
#获取当前平均十五分钟负载
#load_15=`top -n 1 -b | grep average | awk -F ':' '{print $5}' | sed -e 's/\,//g' | awk -F " " '{print $3}'`
load_15=`w|grep load|awk '{print $(NF)}'`
#过滤磁盘使用率大于50%目录,并加入描述
disk_1=$(df -Ph | awk '{if(+$5>40) print "分区:"$1,"总空间:"$2,"使用空间:"$3,"剩余空间:"$4,"磁盘使用率:"$5}')
#拆分
disk_fq=$(df -Ph | awk '{if(+$5>30) print "分区:"$1}')
disk_to=$(df -Ph | awk '{if(+$5>30) print "总空间:"$2}')
disk_us=$(df -Ph | awk '{if(+$5>30) print "使用空间:"$3}')
disk_fe=$(df -Ph | awk '{if(+$5>30) print "剩余空间:"$4}')
disk_ul=$(df -Ph | awk '{if(+$5>30) print "磁盘使用率:"$5}')
disk_ux=$(df -Ph | awk '{if(+$5>30) print $5}')
#存文件路径
path=/server/scripts/"$system_hostname"-"$system_ip".txt
#内存阈值
mem_mo='50'
date=`date +%Y-%m-%d`
DATE=`date +%Y-%m-%d-%H-%M-%S`
mem=`free -h |grep "Mem" |awk -F ' ' '{print $2}'`
hn=`hostname`
pycpu=`cat /proc/cpuinfo | grep "physical id"|sort | uniq | wc -l`
locpu=`cat /proc/cpuinfo | grep "processor"| wc -l`
CPU_Type=`grep "model name" /proc/cpuinfo | awk -F ': ' '{print $2}' | sort | uniq`
CPU_Arch=`uname -m`
uptime=`uptime | sed 's/.*up \([^,]*\), .*/\1/'`
echo -e " " >> $path
#echo -e "服务器当前日期:"${DATE} >>$path
echo -e "主机名:"$system_hostname >> $path
echo -e "服务器IP:"$system_ip >> $path
#echo -e "系统运行时间:" ${uptime} >>$path
#echo -e "物理CPU个数:" ${pycpu} >>$path
#echo -e "逻辑CPU个数:" ${locpu} >>$path
#echo -e "CPU架构:" ${CPU_Arch} >>$path
#echo -e "CPU型号:" ${CPU_Type} >>$path
Disk_use=`echo $disk_ux|sed "s#%# #g"|awk '{print $1}'`
if [[ $Disk_use -gt 30 ]]
then
echo $disk_fq >>$path
echo $disk_to >>$path
echo $disk_us >>$path
echo $disk_fe >>$path
echo $disk_ul >>$path
echo 磁盘巡检状态:不正常 >>$path
else
echo $disk_fq >>$path
echo $disk_to >>$path
echo $disk_us >>$path
echo $disk_fe >>$path
echo $disk_ul >>$path
echo 磁盘巡检状态:正常 >>$path
fi
#内存使用率
PERCENT=$(printf "%d%%" $(($mem_use*100/$mem_total)))
#内存使用率与阈值比对
PERCENT_1=$(echo $PERCENT|sed 's/%//g')
if [[ $PERCENT_1 -gt $mem_mo ]]
then
echo -e 总内存大小:$mem_total MB>> $path
echo -e 已用内存:$mem_use MB >> $path
echo -e 内存剩余大小:$mem_free MB >> $path
echo -e 内存使用率:$PERCENT >> $path
echo -e 内存巡检结果:不正常 >> $path
else
echo -e 总内存大小:$mem_total MB>> $path
echo -e 已用内存:$mem_use MB >> $path
echo -e 内存剩余大小:$mem_free MB >> $path
echo -e 内存使用率:$PERCENT >> $path
echo 内存巡检结果:正常 >> $path
fi
echo -e 平均1分钟负载:$load_1"\n"平均5分钟负载:$load_5"\n"平均15分钟:$load_15 >> $path
TIME_INTERVAL=5
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_USER_BUSY=$(echo $LAST_CPU_INFO | awk '{print $1}')
LAST_SYS_BUSY=$(echo $LAST_CPU_INFO | awk '{print $3}')
LAST_TOTAL_CPU_T=$(echo $LAST_CPU_INFO | awk '{print $1+$2+$3+$4+$5+$6+$7}')
LAST_CPU_USAGE=$(echo $LAST_CPU_INFO | awk '{print $1+$2+$3}')
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_USER_BUSY=$(echo $NEXT_CPU_INFO | awk '{print $1}')
NEXT_SYS_BUSY=$(echo $NEXT_CPU_INFO | awk '{print $3}')
NEXT_TOTAL_CPU_T=$(echo $NEXT_CPU_INFO | awk '{print $1+$2+$3+$4+$5+$6+$7}')
NExT_CPU_USAGE=$(echo $NEXT_CPU_INFO | awk '{print $1+$2+$3}')
#系统空闲时间
SYSTEM_IDLE=`echo ${NEXT_SYS_IDLE} ${LAST_SYS_IDLE} | awk '{print $1-$2}'`
#系统使用时间
SYSTEM_BUSY=`echo ${NEXT_SYS_BUSY} ${LAST_SYS_BUSY} | awk '{print $1-$2}'`
#用户使用时间
USER_BUSY=`echo ${NEXT_USER_BUSY} ${LAST_USER_BUSY} | awk '{print $1-$2}'`
#用户+系统+nice时间
TOTAL_BUSY=`echo ${NExT_CPU_USAGE} ${LAST_CPU_USAGE} | awk '{print $1-$2}'`
#CPU总时间
TOTAL_TIME=`echo ${NEXT_TOTAL_CPU_T} ${LAST_TOTAL_CPU_T} | awk '{print $1-$2}'`
#CPU总时间百分比
CPU_USAGE=`echo ${TOTAL_BUSY} ${TOTAL_TIME} | awk '{printf "%.2f", $1/$2*100}'`
#用户时间百分比
CPU_USER_USAGE=`echo ${USER_BUSY} ${TOTAL_TIME}|awk '{printf "%.2f", $1/$2*100}'`
#系统时间百分比
CPU_sys_USAGE=`echo ${SYSTEM_BUSY} ${TOTAL_TIME} |awk '{printf "%.2f", $1/$2*100}'`
##统计内存使用率
Total=`cat /proc/meminfo |grep -w MemTotal|awk '{print $2}'`Free=`cat /proc/meminfo |grep -w MemFree|awk '{print $2}'`
Available=`cat /proc/meminfo |grep -w MemAvailable|awk '{print $2}'`
MemUsage=`echo "${Total} ${Available}"|awk '{printf "%.2f", ($1-$2)/$1*100}'`
##磁盘使用率
ZL=`df |grep 'dev\|tmpfs'|awk '{sum +=$2}END{print sum}'`
KY=`df |grep 'dev\|tmpfs'|awk '{sum +=$3}END{print sum}'`
DfUsage=`echo "${ZL} ${KY}"|awk '{printf "%.2f",($1-$2)/$1*100}'`
echo CPU 总使用率:${CPU_USAGE}% >> $path
echo CPU用户使用率:${CPU_USER_USAGE}% >> $path
echo CPU系统使用率:${CPU_sys_USAGE}% >> $path
2.文件写入xls
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import xlwt
import datetime
import socket
style = "font:colour_index red; align: wrap on, vert centre, horiz center;"
styleb = xlwt.XFStyle()
al = xlwt.Alignment()
al.horz = 0x02
al.vert = 0x01
styleb.alignment = al
red_style = xlwt.easyxf(style)
title_style = xlwt.easyxf('font: height 200, name Arial Black, colour_index blue, bold on; align: wrap on, vert centre, horiz center;' )
def getlist():
with open('tj1-b2c-b2cback-zkong-web01.kscn-10.38.251.158.txt', 'r+',encoding='utf-8') as f:
s1 = f.readlines()
f.close()
s2 = []
for i in s1:
if '\n' in i:
s2.append(i[:-1])
else:
s2.append(i)
return s2
def fenge():
list0 = []
for num, val0 in enumerate(getlist()):
if val0.split(':')[0] == '主机名':
list0.append(num)
list0.append(len(getlist()))
list1 = []
for num1,val1 in enumerate(list0[1:]):
temp = getlist()[list0[num1]:list0[num1+1]]
list1.append(temp)
return list1
def wxls(): # 写入表格
title = ['主机名','服务器IP','分区','总空间','使用空间','剩余空间','磁盘使用率','磁盘巡检状态','总内存大小',
'已用内存','内存剩余大小','内存使用率','内存巡检结果','平均1分钟负载','平均5分钟负载','平均15分钟','CPU 总使用率','CPU用户使用率','CPU系统使用率']
workbook = xlwt.Workbook(encoding='utf-8')
worksheet = workbook.add_sheet('sheet1')
for i1, val in enumerate(title):
worksheet.write(0, i1, label=val,style = title_style)
first_col = worksheet.col(i1)
first_col.width = 180 * 20
for i2, val2 in enumerate(title):
for i3, val3 in enumerate(fenge()):
for j in val3:
if j.split(':')[0] == val2:
if j.split(':')[1] == '不正常':
worksheet.write(i3 + 1, i2, label=j.split(':')[1],style=red_style)
else:
worksheet.write(i3+1, i2, label=j.split(':')[1] ,style = styleb)
name = 'tj1-b2c-b2cback-zkong-web01.kscn-10.38.251.158.xls'
workbook.save(name)
wxls()
3.推送文件下载服务器
#!bin/bash
set -xe
file="/server/scripts/"
Host="118.31..112"
Pass=""
xls_file="tj1-b2c-b2cback-zkong-web01.kscn-10.38..158.xls"
sshpass -p $Pass scp $file$xls_file root@118.31..112:/usr/local/esl/nginx/html/build
echo " " >/server/scripts/tj1-b2c-b2cback-zkong-web01.kscn-10.38..158.txt
echo " " >/server/scripts/$xls_file