Python 2子进程(dmidecode)变量?

时间:2015-07-13 14:08:28

标签: python linux python-2.7 dmi

我在linux中运行dmidecode以获取硬件信息列表。读取输出并选择某些信息的最佳方法是什么?例如,获取产品名称:dmidecode的一部分?

目前我正在将子进程输出写入文件,然后读取文件中的给定字符串。这似乎是一种低效的做事方式。

我也知道python dmidecode模型但是对于我的生活我不能让它工作它只是一直说没有bios属性

2 个答案:

答案 0 :(得分:2)

如果您知道要查找的特定关键字,可以输入:dmidecode -s keyword

在你的情况下,它将是:

dmidecode -s system-product-name

您也可以按类型过滤。例如:

  • 要返回系统信息:

    dmidecode -t1
    
  • 返回BaseBoard信息:

    dmidecode -t2 
    
  • 要返回机箱信息:

    dmidecode -t3
    

答案 1 :(得分:1)

使用subprocess模块可以通过多种方式在python脚本中获取命令的输出。

  1. subprocess.Popen() - 您可以使用此Popen类指定stdout作为subprocess.PIPE启动命令行流程,然后使用communicate函数获取结果。示例 -

    import subprocess
    p = subprocess.Popen(['dmidecode'] , stdout=subprocess.PIPE)
    result = p.communicate()[0]
    
  2. subprocess.check_output() - 此函数在执行命令后将命令的输出(输出到stdout)作为字节字符串返回。示例 -

    import subprocess
    result = subprocess.check_output(['dmidecode'])
    
  3. 对于您的特定情况,subprocess.check_output()最有可能更适合您,因为您不需要为流程提供任何输入。

    使用subprocess.Popen(),您还需要通过为流程输入stdin来为流程提供输入。