首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python dmidecode,如何通过解析获得HW信息?

Python dmidecode,如何通过解析获得HW信息?
EN

Stack Overflow用户
提问于 2012-12-11 05:52:07
回答 1查看 10.7K关注 0票数 4

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

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

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

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-11 19:30:56

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

代码语言:javascript
复制
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()以查找每个数据字段。我们可以通过引用下表来查看要使用的函数。也位于这个链接上。

然后,我们检查'v'的类型,以确保它是一个dictionary (这是我在我的示例中使用的),并且我们检查'dmi_type‘是我们正在搜索的内容的正确代码。

例如:

代码语言:javascript
复制
   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 = [] ),并按如下方式添加键和值:

代码语言:javascript
复制
BIOSdict["Name"] = str((v['data']['Vendor']))
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13814428

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档