# dmidecode | less

我们通过 dmidecode 命令可以获取厂商、产品型号、序列号等、但是 dmidecode 命令输出的信息太多,我们只需要 System Information 下的 Manufacturer、Product Name、Serial Number 三个信息,并以字典形式输出。

若没有 dmidecode 命令,安装即可:yum install -y dmidecode

代码如下:

# vim dmi.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']

dmi_dic['product'] = dic['Product Name']

dmi_dic['sn'] = dic['Serial Number']

return dmi_dic

if __name__ == '__main__':

print dmiDic()

代码说明:

dmi_list = [i for i in data.split('\n') if i]

是以 \n 对字符串进行切割,保存为一个列表。但是空行就会被切割成为了一个空字符串,if i 则起到去除空字符串效果,因为空字符串为False,只有为True才会被保存到列表中。

if not line[0].strip():

这是因为 System Information 下一行都是以 tab(\t)开头的,strip函数是去除字符串前后的空格或者tab,line[0].strip()则是对第一个字符执行strip,若该字符为空格或者tab,则会被去除,形成一个空字符,而空字符的类型为False,not line[0].strip()则为True。

执行结果如下:

php执行dmidecode,Python:Dmidecode系统信息相关推荐

  1. LEGO EV3 中执行 VSCode Python 代码过程分析

    镜像为 ev3dev. 通过 SSH 连接 LEGO EV3 设备,默认密码为 maker: $ ssh robot@ev3dev.local Password: Linux ev3dev 4.14. ...

  2. python查看系统信息_学习python获取系统信息和磁盘容量

    学习目的: 1)函数调用 2)subprocess模块的使用subprocess.call([命令,参数]) 代码如下:[[email protected] ~]# more pysysinfo_fu ...

  3. python cursor函数_执行从python返回cursor的db2plsql函数

    我有一个pl-sql包,其中包含一个返回ref_cursor对象的函数. 下面是我的python代码,我在其中尝试调用该函数temp="" con = get_connection ...

  4. 软件测试学习 之 Python 两种执行方式——python和python -m 的区别

    笔者使用的操作系统为windows 7,python解释器版为python3.7,pycharm版本为pycharm2018.3 如无特殊说明,代码均在此环境执行 目录 一般结论 简单例子 模块 作为 ...

  5. python循环输出一句话_执行下列 Python语句后的输出结果是( ),循环执行了 1 次。i=-1;while(i0): i *=iprint(i)_学小易找答案...

    [判断题]我们应该找到一种有益于健康的好方法,那么这种办法一定就是体育锻炼,我们应该将它悄悄带入我们的生活. [单选题]形成阳极效应的原因是 [单选题]有以下程序#include void fun(c ...

  6. 执行下列python语句将产生的结果是x=2y=2.0_执行下列Python语句将产生的结果是____________。...

    [简答题]阅读下面的Python程序,请问输出结果是什么?程序的功能是什么? m=int(input("请输入整数m:")) n=int(input("请输入整数n:&q ...

  7. 执行下列python程序输出结果是什么_下列Python程序的运行结果是 x=0 y=True print(xy and 'A''B')_学小易找答案...

    [单选题]1869年,艾耶父子广告公司在( )创建,成为第一家现代意义上的广告代理公司,也标志着广告产业的形成. [单选题]用360浏览器下载杀毒软件,默认安装目录是( ). [填空题]4 在罗盘仪测 ...

  8. php执行dmidecode,Linux dmidecode 命令

    [root@localhost ~]$ dmidecode -q//BIOS相关的硬件信息 BIOS Information Vendor: Bochs Version: Bochs Release ...

  9. python中and与or的执行顺序-python之执行顺序随记

    python的执行顺序一直都是很令人头疼,简单随记了一些 1.正常顺序执行. print(1)a = 2l = [3] 这个就不附结果了,都能猜得到,这种按顺序执行,还有像等号双等号这种,都是从右边开 ...

最新文章

  1. AndroidManifest.xml文件剖析
  2. 鸟哥的linux私房菜-文件压缩于打包-2
  3. 推荐阅读:变异检测到底应该用什么软件?
  4. SSO之CAS单点登录详细搭建
  5. 【最全!最完整解析!】 计算机中,执行一条指令所需要的时间称为指令周期,完成一项基本操作所需要的时间称为机器周期,时钟脉冲的重复周期称为重复周期。因此,()
  6. zip (ICSharpCode.SharpZipLib.dll文件需要下载)
  7. PSP(Python Server Pages) 快速实例
  8. [Flex] ButtonBar系列——垂直布局
  9. CSDN审核机制有点迷惑,决定逐步搬迁到简书
  10. poj Eeny Meeny Moo 我用链表暴力超时了!!!
  11. Photoshop隐藏的4个彩蛋
  12. 在python中安装插件pynput实现聊天窗口消息轰炸
  13. C#百度OCR本地图片识别文字
  14. 用asp.net写的一个购物网站
  15. Office Word 2016 中Word自带公式编辑器编辑的公式转Mathtype出现omml2mml.xsl 问题的解决方法
  16. (个人笔记) java 打印不了韩文,乌龙事件
  17. DB_RECOVERY_FILE_DEST,LOG_ARCHIVE_DEST,LOG_ARCHIVE_DEST_N
  18. 5G NR QC-LDPC MATLAB程序理解
  19. Camouflaged Object Detection阅读笔记
  20. 求水仙花数字(指一个三位数的各位数立方和等于该数字本身)

热门文章

  1. HTML之iframe内联框架
  2. 1086 Tree Traversals Again (25 分)【一般 / 建树 树的遍历】
  3. stoi() 函数----将一个string类型转换为int型
  4. Spring boot添加员工
  5. cvc降噪和主动降噪_降噪蓝牙耳机哪款好?300内建议入手的五款主动降噪蓝牙耳机...
  6. python oracle数据库开发_python连接Oracle数据库
  7. do msgbox loop_【连载1】DDC模块 DO点与强电电气柜的接口形式
  8. Oracle ORA-00904:invalid identifier 标识符无效
  9. DButils的更新与查询,利用C3P0链接数据库
  10. Java设计模式——桥模式