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

2024-05-22 09:37:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用的是fedora1764位,安装了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

Tags: 模块文件name文档model硬件源代码空间
1条回答
网友
1楼 · 发布于 2024-05-22 09:37:28

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

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'的类型,以确保其adictionary(这是我在本例中使用的),并检查'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,这将返回一个字典。然后我们可以创建自己的dict(在我的例子中是BIOSdict = []),并添加键和值,如下所示:

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

相关问题 更多 >