Python 2子进程(dmidecode)为一个变量



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

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

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

如果你知道你正在寻找的特定关键字,你可以输入:dmidecode -s keyword

在你的例子中应该是:

dmidecode -s system-product-name

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

  • 返回系统信息:

    dmidecode -t1
    
  • 返回BaseBoard信息:

    dmidecode -t2 
    
  • 返回机箱信息:

    dmidecode -t3
    

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

  1. subprocess.Popen()—您可以使用此Popen类启动命令行进程,指定stdoutsubprocess.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'])
    

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

使用subprocess.Popen(),您还可以通过管道为流程提供stdin来为流程提供输入。

相关内容

  • 没有找到相关文章

最新更新