2012-12-11 122 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']))