3 \me @ sd d dl Z d dlZd dlZd dlmZ d dlmZ d dlmZ d dl m Z mZ e je ZdZeddd gZd:ej_ed dedd eddeddeddeddeddeddeddeddedded d!ed"d#ed$d%ed&d'ed(d)ed*d+d,Zeee d-d.d/Zeee d-d0d1Zeeee d2d3d4Zeee d-d5d6Zeed7d8d9ZdS ); N) namedtuple)Optional)subp)is_container is_FreeBSDz/sys/class/dmi/idKernelNameslinuxfreebsdZboard_asset_tagzsmbios.planar.tagZboard_vendorzsmbios.planar.makerZ board_namezsmbios.planar.productZboard_serialzsmbios.planar.serialZ board_versionzsmbios.planar.versionZ bios_datezsmbios.bios.reldateZbios_vendorzsmbios.bios.vendorZbios_versionzsmbios.bios.versionZchassis_asset_tagzsmbios.chassis.tagZchassis_vendorzsmbios.chassis.makerZchassis_serialzsmbios.chassis.serialZchassis_versionzsmbios.chassis.versionZ sys_vendorzsmbios.system.makerZproduct_namezsmbios.system.productZproduct_serialzsmbios.system.serialZproduct_uuidzsmbios.system.uuidZproduct_versionzsmbios.system.version)zbaseboard-asset-tagzbaseboard-manufacturerzbaseboard-product-namezbaseboard-serial-numberzbaseboard-versionzbios-release-datezbios-vendorzbios-versionzchassis-asset-tagzchassis-manufacturerzchassis-serial-numberzchassis-versionzsystem-manufacturerzsystem-product-namezsystem-serial-numberzsystem-uuidzsystem-version)keyreturnc C s t j| }|dks|jdkr dS djt|j}tjd| tjj |sVtjd| dS y"t |d}|j }W dQ R X W n tk r tjd| dS X |dt |d d krd }y|jdj S tk r } ztjd||| W Y dd}~X nX dS ) z/ Reads dmi data from /sys/class/dmi/id Nz{0}/{1}zquerying dmi data %szdid not find %srbzCould not read %s utf8z-utf-8 decode of content (%s) in %s failed: %s)DMIDECODE_TO_KERNELgetr formatDMI_SYS_PATHLOGdebugospathexistsopenreadPermissionErrorlendecodestripUnicodeDecodeErrorerror)r kmapZdmi_key_pathfpZkey_datae r&