dmidecode收集系统信息
admin
2023-08-02 00:20:07
0

dmidecode收集系统信息


[root@133 systeminformation]# vim dmidecode_1.py
#!/usr/bin/env python                                                                                                                                                              
                                                                                                                                                                                   
from subprocess import Popen,PIPE                                                                                                                                                  
p = Popen(['dmidecode'],stdout=PIPE)                                                                                                                                               
data=p.stdout                                                                                                                                                                      
line_s = []   #定义一个空列表                                                                                                                                                                  
dmi = {}     #定义一个空字典                                                                                                                                                                      
                                                                                                                                                                                   
a = True              #设置标志位 a = True                                                                                                                                                             
while a:                                                                                                                                                                           
    line = data.readline()                                                                                                                                                         
    if line.startswith('System Information'): #判断以System Information开头的段,                                                                                                                              
        while True:                                                                                                                                                                
            line = data.readline()                                                                                                                                                 
            if line == '\n':           #取该段落,直到有空行                                                                                                                                            
                a = False                                                                                                                                                          
                break                                                                                                                                                              
            else:                                                                                                                                                                  
                line_s.append(line)                                                                                                                                                
                                                                                                                                                                                   
                                                                                                                                                                                   
dmi_dic =  dict([i.strip().split(':') for i in line_s])  #把空格和换行符删除

                                                                                                                          
dmi['Manufacturer'] = dmi_dic['Manufacturer'].strip()  #打印key= Manufacturer的键值对                                                                                                                            
print dmi                                                                                                                                                                          
print {'\n'*20}                                                                                                                                                                                                                                                                                                                                                      
                                                                                                                                                                                   
for k,v in dmi_dic.items():   #打印以System Information开头的段,以key、value打印出来                                                                                                                                                     
    dmi[k] = v.strip()                                                                                                                                                             
print dmi   

[root@133 systeminformation]# python dmidecode_1.py 
{'Manufacturer': 'Dell Inc.'}

set(['\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n'])

{'SKU Number': 'Not Specified', 'UUID': '4C4C4544-0048-4210-8044-B4C04F543258', 'Family': 'Not Specified', 'Serial Number': '4HBDT2X', 'Version': 'Not Specified', 'Product Name': 
'PowerEdge R710', 'Wake-up Type': 'Power Switch', 'Manufacturer': 'Dell Inc.'}


注意:在Python里,以下这些对象相当于布尔值的False
空列表([] )
空元组(() )
空字典({} )
空字符串('' )
零值(0 )
特殊对象None
对象False

[root@133 systeminformation]# cat dmidecode_2.py 
#!/usr/bin/env python
from subprocess import Popen,PIPE

def getDmi():
    p = Popen(['dmidecode'], stdout = PIPE)
    data = p.stdout.read()
    return data

def parseDmi(data):
    lines = []
    line_in = False
    dmi_list = [i for i in data.split('\n') if i]
    for line in dmi_list:
       if line.startswith('System Information'):
           line_in = True
           continue
       if line_in:
           if not line[0].strip():
               lines.append(line)
           else:
               break
    return lines


def dmiDic():
    dmi_dic = {}
    data = getDmi()
    lines = parseDmi(data)
    dic = dict ([i.strip().split(':')for i in lines])
    dmi_dic['vendor'] = dic['Manufacturer']
    return dmi_dic

if __name__ == '__main__':
    print dmiDic()
    
[root@133 systeminformation]# python dmidecode_2.py 
{'vendor': ' Dell Inc.'}


In [1]: a=''  #a的值是null,not a = True

In [2]: not a
Out[2]: True

In [3]: a=' '#a的值是空格或者\t, a!=null, not a = False

In [4]: not a
Out[4]: False

In [5]: a='\t'

In [6]: a
Out[6]: '\t'

In [7]: not a
Out[7]: False

In [8]: a='\t'

In [9]: a
Out[9]: '\t'

In [10]: a.strip()
Out[10]: ''

In [11]: not a.strip()
Out[11]: True



In [12]: a='   '

In [13]: not a
Out[13]: False

In [14]: a.strip()
Out[14]: ''

In [15]: not a.strip()
Out[15]: True


相关内容

热门资讯

广西村民被蛇咬伤撑了两天后离世... 封面新闻记者 杨峰 广西横州报道受2026年第10号台风“美莎克”影响,7月6日广西横州市六蓝水库发...
圆通、中通、韵达等发布告客户书 7月9日,圆通速递、中通快递等多家物流企业相继发布告客户书,提醒受今年第 9 号超强台风 "巴威" ...
市政协领导分赴一线督查指导防汛... 今年第9号台风“巴威”(超强台风级)逐步逼近,温州市气象台于7月9日19时5分发布温州市区台风蓝色预...
原创 七... 2025年度国家科学技术奖揭晓,韦东奕凭借《流动转捩机理的数学研究》,斩获国家自然科学奖二等奖。 虽...
上虞:抢抓防台“窗口期” 提前... 【本站7月9日讯】为有效防范今年第9号台风“巴威”,上虞区坚持关口前移、提前部署,坚持“一个目标、四...
男子隐私部位被割断,医生接回!... 6月某天的中午,25岁的小张经历了一场突如其来的意外,阴茎遭受利刃伤害,“命根子”险些没了。
消息人士:穆杰塔巴不太可能出席... 据CNN报道,一位地区消息人士透露,伊朗新任最高领袖穆杰塔巴不太可能按照伊斯兰革命卫队的建议,出席其...
内塔尼亚胡与特朗普通话,商定保... 当地时间9日晚间,以色列总理办公室发表声明称,以总理内塔尼亚胡当晚与美国总统特朗普通电话,双方商定将...
华电科工获得实用新型专利授权:... 证券之星消息,根据天眼查APP数据显示华电科工(601226)新获得一项实用新型专利授权,专利名为“...
中集集团获得实用新型专利授权:... 证券之星消息,根据天眼查APP数据显示中集集团(000039)新获得一项实用新型专利授权,专利名为“...