当前位置: 首页 > 面试题库 >

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

卢英范
2023-03-14
问题内容

我正在使用Fedora 17
64bit,安装了dmidecode和python-
dmidecode
,在寻找有关如何使用python-
dmidecode的文档时,我还没有找到任何东西。我在浏览源代码时发现了一个示例,但仅此而已。任何人熟悉此模块以及如何在html" target="_blank">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

问题答案:

弄清楚了,通过使用以下内容,我们可以获得我需要的所有数据:

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'以确保其为a 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']))


 类似资料:
  • 问题内容: 我需要通过Java应用程序获取系统和硬件信息。 我对......感兴趣: 操作系统细节; 处理器数量,名称,处理器负载(以百分比为单位); 内存状态(总计/空闲); 每个操作系统的进程(线程)计数和CPU /内存使用情况; 网络统计(每个接口); 有没有可以做到这一点的Java库? 问题答案: 使用Java获取操作系统级别的系统信息将使您正确地入门。 查找操作系统信息

  • 问题内容: 我正在开发向用户介绍设备的应用程序。我在SO上遇到了许多问题,但没有找到答案。我想找到 型号编号 Android版 基带版本 内核版本 内部编号 我的手机的RAM。 对于此Thankx,我将不胜感激。 问题答案: 我在代码中使用了它,所以我把所有内容都放了:

  • 我四处搜索,找到了一些有用的程序,例如: 但没人能帮我。我需要获得有关CPU、RAM、OS等的信息。有什么工具或程序可以帮助我吗?

  • 问题内容: 我在Eclipse中编写了一个应用程序,该应用程序已成功编译并运行。之后,在相应的目录中找到 .java和 .class文件。然后,我删除了* .class文件,现在我不知道该如何找回它。 Eclipse写道:“未编写类文件。如果这样,请尝试刷新此项目并进行构建,该项目可能会不一致”。 通过右键单击该项目,我得到了一个下拉菜单,在其中我找到了“刷新”,但找不到如何“构建”该项目。 那么

  • 我有一个正在解析的用户列表。通用域名格式 我需要检索其中一些用户,我有所有必要的ID。例如,parse中存储了50个用户,但我只需要10个。 有了这10个ID,我需要获得用户。 我是邮递员,我做下一件事: 我得到了正确的数据。 如何将其转换为改装呼叫?如何在改装中使用“where”语句? 感谢所有。