0

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

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

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

4

2 回答 2

2

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

在您的情况下,它将是:

dmidecode -s system-product-name

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

  • 返回系统信息:

    dmidecode -t1
    
  • 要返回基板信息:

    dmidecode -t2 
    
  • 返回机箱信息:

    dmidecode -t3
    
于 2015-07-13T14:22:27.617 回答
1

有多种方法可以让您使用subprocess模块在 python 脚本中获取命令的输出。

  1. subprocess.Popen()Popen- 您可以使用指定stdoutas的此类启动命令行进程subprocess.PIPE,然后使用communicate函数获取结果。例子 -

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

    import subprocess
    result = subprocess.check_output(['dmidecode'])
    

对于您的特定情况,subprocess.check_output()很可能更适合,因为您不需要为流程提供任何输入。

您还可以通过subprocess.Popen()PIPING 为流程提供输入stdin

于 2015-07-13T14:25:19.647 回答