Python Linux dmidecode,如何通过解析获取硬件信息? [英] Python Linux dmidecode, how to obtain HW info by Parsing?

查看:164
本文介绍了Python Linux dmidecode,如何通过解析获取硬件信息?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用的是Fedora 17 64位,已安装 dmidecode

I'm using Fedora 17 64bit, installed dmidecode and python-dmidecode, in my search for a doc on how to use python-dmidecode, i've yet to find anything. I found an example while browsing the source but nothing else. Anyone familiar with this module and how to access it in python? Any documentation you can reference me to would be helpful.

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

I'm trying to obtain hardware specifications in Fedora 17:

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

In C# using Management namespace, I was able to obtain all the following: Will it be possible to obtain the same In Linux via Python?

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

推荐答案

通过使用以下内容,我们可以找到所需的所有数据:

Figured it out, by using the following we can obtain all data that I need:

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()来查找数据的每个字段.我们可以通过参考下表来查看要使用的功能.该链接也位于此链接.

We iterate the dmidecode.bios().values() to find each field of data. We can see which function to use by referencing the table below. Which is also located at this link.

然后我们检查'v'的类型以确保其为dictionary (这就是我在我的情况下所使用的) ,然后检查'dmi_type'是正确的代码我们正在寻找的东西.

We then check the type of 'v' to ensure its a dictionary (That's what I'm using in my case) and we check that the 'dmi_type' is the correct code for what we are searching for.

例如:

   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 = []),并按如下方式添加键和值:

If we wanted to get the BIOS Info, we would then reference v['dmi_type'] == 0 this will return a dictionary. We can then create our own dict (in my case BIOSdict = [] ) and add the key and value as so:

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

这篇关于Python Linux dmidecode,如何通过解析获取硬件信息?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆