公司server在进行上线前需要做合规检查,合规平台最终会输出一个结果总表和每台主机的细化表。在上线主机较少的情况下,可以手工的一条条的去复核,在批量一两百台主机上线时,通过手工的一台台一条条的逐量找出不合规项再提交给工程组是一个比较花费时间的工作。这里就结合pyexcel模块,对结果进行一个简单的处理筛选出所有主机的不合规项。

一、批量扫描

合规平台是支持批量主机扫描的,不过其默认不支持tar包,只支持zip和rar包,而包内的每台主机不能使用压缩包,而应该使用文件夹,这里先将工程传过来的zip包内的所有压缩包先做一次解压再打包处理。

1[root@localhost 361way]# unzip jieguo.zip
2[root@localhost 361way]# cd jieguo
3[root@localhost jieguo]# for i in `ls`;do tar xvf $i; rm -rf $i;done
4[root@localhost jieguo]# cd ../
5[root@localhost 361way]# zip -r jieguo.zip jieguo/
6[root@localhost 361way]# pwd
7/tmp/361way

将这个新的包直接导入合规平台扫描。

hegui

二、扫描结果处理

扫描后出来的一个总的结果是一个excel文件,内容大致如下:

excel

表格检查项不仅仅这几项,后面还有很多项,而且结果根据主机的批次不同,也会在redhat、suse、aix等不同的sheet页内。一般同一批上线主机一般系统都会一致。这里以sheet页为suse,excel 文件名为kkk.xls为例。python脚本如下:

 1#!/usr/bin/python
 2#coding=utf-8
 3import sys
 4reload(sys)
 5sys.setdefaultencoding('utf-8')
 6import json
 7import pyexcel as pe
 8from pyexcel.ext import xls
 9r = pe.SeriesReader(file="kkk.xls",sheetname="suse")
10data = pe.utils.to_records(r)
11#print r
12#print data
13#print json.dumps(data, encoding="UTF-8", ensure_ascii=False)
14for d in data:
15    #print row
16    host = d.values()[0]
17    for x in [x for x in d.keys() if d[x] != '不合格']:
18        d.pop(x)
19    if len(d) > 0:
20       #print d
21       print host,json.dumps(d, encoding="UTF-8", ensure_ascii=False)

注:pyexcel 和pyexcel-xls 模块安装时需要先安装好以下依赖包xlrd、future、xlwt-future、pyexcel-io、ordereddict 。如果主机可以直接连接外网,也可以通过easy_install pyexcel pyexcel-xls 或pip pyexcel pyexcel-xls进行安装。

以上脚本执行后的结果如下:

pyexcel

如需更美观也可以再进行进一步处理。