2012-12-11 123 views
2

我正在使用Fedora 17 64bit,安装了dmidecodepython-dmidecode,在我搜索关于如何使用python-dmidecode的文档时,我还没有找到任何东西。我在浏览源代码时发现了一个例子,但没有其他的。任何人都熟悉这个模块,以及如何在Python中访问它?您可以引用我的任何文档都会有所帮助。Python Linux dmidecode,如何通过解析获取硬件信息?

我想获得的Fedora 17的硬件规格:

在C#中使用管理的命名空间,我能够获得所有的以下内容: ,才有可能获得同样的在Linux中通过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 
+0

如果你已经有了可以公开这些在Python库,没错! – Makoto

回答

4

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

import dmidecode 
from pprint import pprint 

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'的类型,以确保它是一个dictionary(这是我用我的情况是什么)我们检查'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']))