根据linux系统的sar值,画出execl 的折线图。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import commands
import xlsxwriter
sar = "sar -q -f /var/log/sa/sa"
workbook = xlsxwriter.Workbook('ccccc.xlsx')
worksheet = workbook.add_worksheet() #创建一个sheet
chart =workbook.add_chart({'type':'line'}) #定义图标类型
# 获取 xls的数据
def data(list_data):
c=2 #计数器
d= list_data[0]
sar_date = commands.getstatusoutput(sar+str(d)+"|awk '{print $1}'")
sar_date =sar_date[1].split('\n')
del sar_date[0:2]
for k in sar_date:
worksheet.write('%s' % chr(97).upper()+str(c),k )
c+=1
a = 98 #用于英文字母
for i in list_data:
i = str(i)
sar_data = commands.getstatusoutput(sar+i+"|awk '{print $5}'")
sar_data =sar_data[1].split('\n')
del sar_data[0:3]
#print sar_data
sar_data = map(eval, sar_data)
worksheet.write('%s' % chr(a).upper()+"1",int(i) )
b=2 #计数器
for h in sar_data:
worksheet.write('%s' % chr(a).upper()+str(b),h)
b+=1
a+=1
#图标数据范围
def chart_creat(column):
#chart =workbook.add_chart({'type':'line'})
chart.add_series({
'categories': '=Sheet1!$A$2:$A$145',
'values': '=Sheet1!$'+column+'$2:$'+column+'$146',
#'line': {'color':'red'},
'name':'=Sheet1!$'+column+'$1',
})
#循环图表数据 生成图表 定义格式
def charrt(len_sar):
for col in range(98,98+len_sar):
chart_creat(chr(col).upper())
chart.set_size({'width':1200,'height':289})
chart.set_title({'name':'sar '})
worksheet.insert_chart('F9',chart)
#取sar的日期 字符串最好
sar1 = ['10','11','12','09']
sar_len = len(sar1)
#执行函数
data(sar1)
charrt(sar_len)
workbook.close()
sar1值 就是想取值得日期。
附件是生成的效果图
比较简单。