#!/usr/bin/env python
#**** -*- coding: utf-8 -*-
# date:2019-11-04
# liuyuqiang
# function:getting server disk info from server
getbasedata = """
hostname -I|awk ‘{print $1}‘;
df -h|grep data|wc -l;
ls /data*|wc -l;
df -h|grep data|awk ‘{print $2}‘|grep T|sed "s/T//"|xargs|sed ‘s/\s/+/g‘|bc;
df -h|grep data|awk ‘{print $5}‘|sed "s/%//"|xargs|sed ‘s/\s/+/g‘|bc;
df -h|grep data|awk ‘{if ($5>=90) {print $5}}‘|wc -l;
df -h|grep data|awk ‘{if (($5>=80)&&($5<90)) {print $5}}‘|wc -l;
df -h|grep data|awk ‘{if (($5>=70)&&($5<80)) {print $5}}‘|wc -l;
df -h|grep data|awk ‘{if (($5>=60)&&($5<70)) {print $5}}‘|wc -l;
df -h|grep data|awk ‘{if ($5<60) {print $5}}‘|wc -l
"""
try:
# python2
import commands
with open("/tmp/lyq/.getdata.sh", "w") as f:
print >> f, getbasedata
(status, getdata) = commands.getstatusoutput(
"ansible -i /tmp/lyq/iplist all -o -m script -a ‘/tmp/lyq/.getdata.sh‘ |sed ‘s/}//‘|awk -F: ‘{print $NF}‘")
except IOError as err:
print("Error", str(err))
# python3
import subprocess
# with open("/tmp/lyq/.getdata.sh", "w") as f:
## print(getbasedata, file=f)
(status, getdata) = subprocess.getstatusoutput(
"ansible -i /tmp/lyq/iplist all -o -m script -a ‘/tmp/lyq/.getdata.sh‘ |sed ‘s/}//‘|awk -F: ‘{print $NF}‘")
finally:
print("Getting Server base data \n")
with open("/tmp/lyq/.getdata.sh", "w") as f:
print >> f, ""
basedata = []
def format_basedata():
for each_item in getdata.split("\n"):
basedata.append(eval(each_item))
for newitem in basedata:
for i in range(2, 5):
newitem.append(str(float(‘%.2f‘ % (eval(newitem[i]) / eval(newitem[1])))))
#print(newitem)
def get_disk_num():
global type12, type36
type12list = []
type36list = []
type12 = type36 = 0
for newitem in basedata:
if newitem[1] == ‘12‘:
type12 += 1
type12list.append(newitem[0])
elif newitem[1] == ‘36‘:
type36 += 1
type36list.append(newitem[0])
else:
print("New Disk_num!!!", newitem[1])
if len(type12list) > 0:
print("12_disk_server_total_num: {} ".format(type12))
print("12_disk_server_IPlist: ")
print(type12list)
print("\n")
if len(type36list) > 0:
print("36_disk_server_total_num: {} ".format(type36))
print("36_disk_server_IPlist: ")
print(type36list)
print("\n")
def get_single_disk_use_per():
global single_diskgt90, single_diskgt80, single_diskgt70, single_diskgt60, single_disklt60, total_disk_num, total_disk_TB, total_volum, total_diskuse_avg_per, total_diskuse_avg_per_sum
single_diskgt90 = single_diskgt80 = single_diskgt70 = single_diskgt60 = single_disklt60 = total_disk_num = total_disk_TB = total_volum = total_diskuse_avg_per = total_diskuse_avg_per_sum = 0
for newitem in basedata:
total_disk_num += int(eval(newitem[1]))
total_disk_TB += int(eval(newitem[3]))
total_volum += int(eval(newitem[2]))
total_diskuse_avg_per_sum += int(eval(newitem[-1]))
total_diskuse_avg_per = total_diskuse_avg_per_sum / len(basedata)
single_diskgt90 += int(eval(newitem[5]))
single_diskgt80 += int(eval(newitem[6]))
single_diskgt70 += int(eval(newitem[7]))
single_diskgt60 += int(eval(newitem[8]))
single_disklt60 += int(eval(newitem[9]))
print(
"total_disk_num : {} \ntotal_disk_TB : {} \ntotal_volum : {} \ntotal_diskuse_avg_per : {} \nsingle_disk_gt_90: {} \nsingle_disk_gt_80: {} \nsingle_disk_gt_70: {} \nsingle_disk_gt_60: {} \nsingle_disk_lt_60: {} \n".format(
total_disk_num, total_disk_TB, total_volum, float(‘%.2f‘ % total_diskuse_avg_per), single_diskgt90,
single_diskgt80, single_diskgt70, single_diskgt60, single_disklt60))
if __name__ == ‘__main__‘:
format_basedata()
get_disk_num()
get_single_disk_use_per()
"输出结果展示"
Getting Server base data
12_disk_server_total_num: 4
12_disk_server_IPlist:
[‘10.23.13.194‘, ‘12.27.23.16‘, ‘17.127.25.126‘, ‘192.214.160.227‘]
36_disk_server_total_num: 2
36_disk_server_IPlist:
[‘172.24.14.35‘, ‘192.211.16.36‘]
total_disk_num : 120
total_disk_TB : 820
total_volum : 26148
total_diskuse_avg_per : 41.0
single_disk_gt_90: 12
single_disk_gt_80: 0
single_disk_gt_70: 0
single_disk_gt_60: 0
single_disk_lt_60: 108
原文:https://blog.51cto.com/880314/2447693