利用pyexcel模块提供excel信息

2015年1月28日 发表评论 阅读评论

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

一、批量扫描

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

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

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

hegui

二、扫描结果处理

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

excel

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

#!/usr/bin/python
#coding=utf-8
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
import json
import pyexcel as pe
from pyexcel.ext import xls
r = pe.SeriesReader(file="kkk.xls",sheetname="suse")
data = pe.utils.to_records(r)
#print r
#print data
#print json.dumps(data, encoding="UTF-8", ensure_ascii=False)
for d in data:
    #print row
    host = d.values()[0]
    for x in [x for x in d.keys() if d[x] != '不合格']:
        d.pop(x)
    if len(d) > 0:
       #print d
       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

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




本站的发展离不开您的资助,金额随意,欢迎来赏!

You can donate through PayPal.
My paypal id: itybku@139.com
Paypal page: https://www.paypal.me/361way

  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.