import psutil import time import xlwt import platform from subprocess import Popen, PIPE def getoutput(command): print("开始执行命令:%s" %command) comm = Popen(command, stdout=PIPE, stdin=PIPE, stderr=PIPE, shell=True) out, err = comm.communicate() if err: print("执行命令失败:%s"% command) else: return out def get_os_info(): sys = platform.system() ip = getoutput("ifconfig eth0 |awk -F '[ :]+' 'NR==2{print $4}'") ip = str(ip, encoding='utf-8').strip() return sys, ip def get_time(): now_time = time.strftime('%Y-%m-%d %H:%M:%S') return now_time def get_CPU(): cpu = "CPU:%s" % int(psutil.cpu_percent(interval=0)) + "%" return cpu def get_memory(): data = psutil.virtual_memory() #获取内存完整信息 memory = "Memory:%s" % (int((data.percent))) + "%" return memory def get_dick(): dick_1 = [] dick1 = getoutput("df -h |grep '%'| awk -F ' ' 'NR>2{print $5, $6}'") #print(type(dick1)) str1 = str(dick1, encoding='utf-8') dick1 = str1.strip().split('\n') #['Use% Mounted', '/ ', '0% /dev/shm', '9% /boot', '100% /mnt', ''] return dick1 def get_process(): com = getoutput('ps -ef |grep ssh |wc -l' ) return com def dict(): info = [] info_content = [] # get_time = get_time() get_info = get_os_info() # interval=1 os_sys = list(get_info)[0] os_ip = list(get_info)[1] info.append(os_sys) info_content.append(os_ip) CUP = get_CPU() # print(CUP.split(':')[0]) info.append(CUP.split(':')[0]) info_content.append(CUP.split(':')[1]) MEM = get_memory() info.append(MEM.split(':')[0]) info_content.append(MEM.split(':')[1]) # print(info_content) # print(info) Dick = get_dick() dick = int(len(Dick)) for i in range(dick): info.append(Dick[i].split(' ')[1]) info_content.append(Dick[i].split(' ')[0]) dict = {} for i in range(len(info)): dict[info[i]] = info_content[i] return dict, info, info_content # 百分数转为int def compare_int(string): if "%" in string: newint = int(string.strip("%")) / 100 return newint else: print("你输入的不是百分比!") if __name__ == "__main__": dict_1 = dict() #所有信息 time = get_time() workbook = xlwt.Workbook(encoding='utf-8') worksheet = workbook.add_sheet('每日巡检', cell_overwrite_ok=True) # 设置字体 #style = xlwt.XFStyle() # 初始化样式 font = xlwt.Font() # 为样式创建字体 font.name = '宋体' font.bold = True # 黑体 # 对其方式 al = xlwt.Alignment() al.horz = 0x02 # 设置水平居中 al.vert = 0x01 # 设置垂直居中 # 添加边框 borders = xlwt.Borders() # Create Borders borders.left = xlwt.Borders.THIN borders.right = xlwt.Borders.THIN borders.top = xlwt.Borders.THIN borders.bottom = xlwt.Borders.THIN #背景色红色 pattern = xlwt.Pattern() pattern.pattern = xlwt.Pattern.SOLID_PATTERN pattern.pattern_fore_colour = 10 #红色 #背景色2 pattern2 = xlwt.Pattern() pattern2.pattern = xlwt.Pattern.SOLID_PATTERN pattern2.pattern_fore_colour = 23 # 浅色 # 初始化样式 style1 = xlwt.XFStyle() #字体 style1.font = font style1.alignment = al style2 = xlwt.XFStyle() style2.font = font style2.alignment = al style2.borders = borders style2.pattern = pattern2 style3 = xlwt.XFStyle() style3.font = font style3.alignment = al style3.borders = borders #红色 style4 = xlwt.XFStyle() style4.alignment = al style4.borders = borders style4.pattern = pattern result = ['序号', "ip地址", '操作系统版本', 'CPU使用率(<80%)', '内存使用率(<80*)', '/boot使用率(<80%)', '/mnt使用率(<80%)','ssh进程(存活)'] worksheet.write(0, 0, '%s' %time, style1) # 带样式的写入 result_1 = len(result) #print(result) for i in range(result_1): #print(result[i]) # 设置首列的宽度 fir_col = worksheet.col(i) fir_col.width = 300 * 20 # 设置行高 tall_style = xlwt.easyxf('font:height 320;') # 36pt,类型小初的字号 first_row = worksheet.row(i) first_row.set_style(tall_style) worksheet.write(1, i, result[i], style2) if i == 0: worksheet.write(2, i, 1, style3) else: pass res = get_os_info() #print(list(res)[0]) worksheet.write(2, 1, list(res)[1], style3) worksheet.write(2, 2, list(res)[0], style3) res_1 = list(dict_1)[0] cpu_int = res_1.get('CPU') cpu_int2 = '80%' if compare_int(cpu_int) >= compare_int(cpu_int2): worksheet.write(2, 3, res_1.get('CPU'), style4) else: worksheet.write(2, 3, res_1.get('CPU'), style3) mem_int = res_1.get('Memory') mem_int2 = '80%' if compare_int(mem_int) >= compare_int(mem_int2): worksheet.write(2, 4, res_1.get('Memory'), style4) else: worksheet.write(2, 4, res_1.get('Memory'), style3) boot = res_1.get('/boot') boot_int2 = '80%' if compare_int(boot) >= compare_int(boot_int2): worksheet.write(2, 5, res_1.get('/boot'), style4) else: worksheet.write(2, 5, res_1.get('/boot'), style3) mnt = res_1.get('/mnt') mnt_int2 = '80%' if compare_int(mnt) >= compare_int(mnt_int2): worksheet.write(2, 6, res_1.get('/mnt'), style4) else: worksheet.write(2, 6, res_1.get('/mnt'), style3) process = int(get_process()) if process > 2: worksheet.write(2, 7, '存活', style3) else: worksheet.write(2, 7, '无进程', style4) workbook.save('formatting.xls') # 保存文件