Step By Step使用Python分析AIX SNAP(4)——获取需要的信息

上一节我们已经知道了如何利用Python打开SNAP文件,以及如何把信息写入到Excel文件中。

但是SNAP中的信息很多,很多时候我们只是需要其中的一些信息,而不是把整个文件的内容都输出出来。

比如,我只是想知道这个OS的主机名和CPU内存资源,或者机器的型号序列号。

比如

SNAP里面/general/lparstat.out文件,包含如下信息

Node Name                                  : Node1
Partition Name                             : Node1
Partition Number                           : 6
Type                                       : Dedicated-SMT
Mode                                       : Capped
Entitled Capacity                          : 5.00
Partition Group-ID                         : 32774
Shared Pool ID                             : –
Online Virtual CPUs                        : 5
Maximum Virtual CPUs                       : 10
Minimum Virtual CPUs                       : 1
Online Memory                              : 47872 MB
Maximum Memory                             : 73728 MB
Minimum Memory                             : 2048 MB
Variable Capacity Weight                   : –
Minimum Capacity                           : 1.00
Maximum Capacity                           : 10.00
Capacity Increment                         : 1.00
Maximum Physical CPUs in system            : 16
Active Physical CPUs in system             : 16
Active CPUs in Pool                        : –
Shared Physical CPUs in system             : 0
Maximum Capacity of Pool                   : 0
Entitled Capacity of Pool                  : 0
Unallocated Capacity                       : –
Physical CPU Percentage                    : 100.00%
Unallocated Weight                         : –
Memory Mode                                : Dedicated
Total I/O Memory Entitlement               : –
Variable Memory Capacity Weight            : –
Memory Pool ID                             : –
Physical Memory in the Pool                : –
Hypervisor Page Size                       : –
Unallocated Variable Memory Capacity Weight: –
Unallocated I/O Memory entitlement         : –
Memory Group ID of LPAR                    : –
Desired Virtual CPUs                       : 5
Desired Memory                             : 47872 MB
Desired Variable Capacity Weight           : –
Desired Capacity                           : 5.00
Target Memory Expansion Factor             : –
Target Memory Expansion Size               : –
Power Saving Mode                          : Disabled

假如我们只需要输出Node Name 、Online Virtual CPUs 、Online Memory这三项内容,那么可以使用如下Python程序,修改自exmaple1

#! /usr/bin/env python
#coding=utf-8

import tarfile
snapfile = tarfile.open("snap.pax")
#打开snap.pax文件

lparinfo=snapfile.extractfile("./general/lparstat.out").readlines()
#读取snap.pax包中的/general/lparstat.out文件
#注意使用的是readlines(),表示按行读取,读取的结果是数组,即lparinfo[0]是第一行,lparinfo[1]是第二行。。。

outputfile=open("lparinfo.txt",'w')
#将输出保存在lparinfo.txt文件

for line in lparinfo:
    if line.find("Node Name")!=-1 or line.find("Online Virtual CPUs")!=-1 or line.find("Online Memory")!=-1:
        outputfile.write(line)
#这里是一个循环,循环取数组lparinfo中的每一个值给变量line,即第一次循环line=lparinfo[0],第二次循环line=lparinfo[1]
#line.find()表示在变量line字符串内查找是否有对应的内容,比如line.find("Node Name")就是查找line内是否存在"Node Name"
#返回的值是查找内容在line内的位置号,找不到就返回-1,line.find("Node Name")!=-1即表示line中有"Node Name"
#当查找到"Node Name"、"Online Virtual CPUs"、"Online Memory"任意一个时,输出该行内容到outputfile

outputfile.close()

将以上内容保存为example3.py,同目录下有一个snap.pax的文件,双击运行example3.py,就会产生一个lparinfo.txt的文件

内容应该是

Node Name                                  : Node1
Online Virtual CPUs                        : 5
Online Memory                              : 47872 MB

下一步,我们结合起来,不再把内容输出到文本文件,而是输出到Excel文件

#! /usr/bin/env python
#coding=utf-8

import tarfile
import xlwt

excelfile = xlwt.Workbook()
table = excelfile.add_sheet(u"测试表")
#创建一个Excel表对象,并创建一个名为“测试表”的sheet

snapfile = tarfile.open("snap.pax")
#打开snap.pax文件

lparinfo=snapfile.extractfile("./general/lparstat.out").readlines()
#读取snap.pax包中的/general/lparstat.out文件

i=0
#利用变量i来作为输出表格的行数

for line in lparinfo:
if line.find("Node Name")!=-1 or line.find("Online Virtual CPUs")!=-1 or line.find("Online Memory")!=-1:
outputline=line.split(":")
#以":"为关键字去分隔line的内容,分隔后的内容为数组outputline,outputline[0]表示分隔的第一部分,以此类推
table.write(i,0,outputline[0].strip())
table.write(i,1,outputline[1].strip())
#将line内容的第一部分outputline[0]写入第i行的第0格,第二部分outputline[1]写入第1格,strip()用于去除多余空格
i=i+1
#行号加1

excelfile.save("test.xls")
#将内容保存在“test.xls"文件

输出的Excel文件test.xls,内容应该是

Node Name Node1
Online Virtual CPUs 5
Online Memory 47872 MB

下次我们研究一下更复杂的数据抓取

© 2015, QP. 版权所有.

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇