Python Linux dmidecode,如何通过解析获取硬件信息?

标签 python linux

我正在使用 Fedora 17 64 位,已安装 dmidecodepython-dmidecode ,在我搜索有关如何使用 python-dmidecode 的文档时,我还没有找到任何东西。我在浏览源代码时找到了一个例子,但没有别的。有人熟悉这个模块以及如何在 python 中访问它吗?您可以引用的任何文档都会有所帮助。

我正在尝试获取 Fedora 17 中的硬件规范:

在使用管理命名空间的 C# 中,我能够获得以下所有内容: 是否可以通过 Python 在 Linux 中获得相同的内容?

BIOS
 - Name

Motherboard
 - Manufacturer
 - Model

CPU
 - Name
 - Architecture
 - NumberOfCores
 - CurrentClockSpeed

Memory
 - Name
 - Manufacturer
 - MemoryType
 - Speed
 - DeviceLocator
 - Capacity
 - Model

Video
 - Name
 - VideoProcessor
 - AdapterRam
 - VideoMemoryType
 - VideoArchitecture
 - VideoMode

Network
 - Name
 - ProductName
 - Manufacturer
 - PhysicalAdapter

HardDrive
 - Index
 - Description
 - InterfaceType
 - Manufacturer
 - Model
 - Size
 - Partitions

最佳答案

想通了,通过使用以下我们可以获得我需要的所有数据:

import dmidecode

def getBIOS():
    for v in dmidecode.bios().values():
        if type(v) == dict and v['dmi_type'] == 0:
            BIOSdict["Name"] = str((v['data']['Vendor']))
            BIOSdict["BuildNumber"] = str((v['data']['Version']))
            BIOSdict["SoftwareElementID"] = str((v['data']['BIOS Revision']))

我们迭代 dmidecode.bios().values() 以找到数据的每个字段。我们可以通过引用下表来查看使用哪个函数。也位于此 link .

然后我们检查 'v' 的类型以确保它是一个字典 (这就是我在我的例子中使用的) 和我们检查 'dmi_type' 是否是我们正在搜索的正确代码。

例如:

   Type   Information
       ----------------------------------------
          0   BIOS
          1   System
          2   Base Board
          3   Chassis
          4   Processor
          5   Memory Controller
          6   Memory Module
          7   Cache
          8   Port Connector
          9   System Slots
         10   On Board Devices
         11   OEM Strings
         12   System Configuration Options
         13   BIOS Language
         14   Group Associations
         15   System Event Log
         16   Physical Memory Array
         17   Memory Device
         18   32-bit Memory Error
         19   Memory Array Mapped Address
         20   Memory Device Mapped Address
         21   Built-in Pointing Device
         22   Portable Battery
         23   System Reset
         24   Hardware Security
         25   System Power Controls
         26   Voltage Probe
         27   Cooling Device
         28   Temperature Probe
         29   Electrical Current Probe
         30   Out-of-band Remote Access
         31   Boot Integrity Services
         32   System Boot
         33   64-bit Memory Error
         34   Management Device
         35   Management Device Component
         36   Management Device Threshold Data
         37   Memory Channel
         38   IPMI Device
         39   Power Supply


       Keyword     Types
       ------------------------------
       bios        0, 13
       system      1, 12, 15, 23, 32
       baseboard   2, 10
       chassis     3
       processor   4
       memory      5, 6, 16, 17
       cache       7
       connector   8
       slot        9

如果我们想要获取 BIOS 信息,我们将引用 v['dmi_type'] == 0 这将返回一个字典。然后我们可以创建我们自己的字典(在我的例子中是 BIOSdict = [] )并这样添加键和值:

BIOSdict["Name"] = str((v['data']['Vendor']))

关于Python Linux dmidecode,如何通过解析获取硬件信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13814428/

相关文章:

python - add_swig_library 的 undefined symbol

python - 从 0 个固定装置安装了 0 个对象,没有正确读取 FIXTURE_DIRS

C 通过读取系统调用在我的缓冲区中查找换行符

java - 模块化 OpenJDK11 Java 镜像在 Linux 上找不到动态库(例如 libjava.so)

python - 获取空白列表 - 不知道为什么?

python - 如何将以下 Matlab 循环转换为 Python?

python - 对象的字符串替换(非字典)

javascript - 将 Flask 变量从 javascript 传递到 html

linux - 如何使用名字和姓氏查找用户名

php - 在 php 中使用 pdftopm 将 pdf 转换为图像,而无需在磁盘上写入文件