1.获取服务器资源
#!/bin/bash#获取主机名system_hostname=$(hostname | awk '{print $1}')#获取服务器IPsystem_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} >>$pathecho -e "主机名:"$system_hostname >> $pathecho -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} >>$pathDisk_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 磁盘巡检状态:不正常 >>$pathelse echo $disk_fq >>$path echo $disk_to >>$path echo $disk_us >>$path echo $disk_fe >>$path echo $disk_ul >>$path echo 磁盘巡检状态:正常 >>$pathfi#内存使用率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 内存巡检结果:正常 >> $pathfi echo -e 平均1分钟负载:$load_1"\n"平均5分钟负载:$load_5"\n"平均15分钟:$load_15 >> $pathTIME_INTERVAL=5LAST_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}% >> $pathecho CPU用户使用率:${CPU_USER_USAGE}% >> $pathecho 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