zoukankan      html  css  js  c++  java
  • Python 通过wmi获取Window服务器硬件信息

    通过pip install wmi安装wmi
    查看cpu序列号:
    wmic cpu get processorid
    在这里插入图片描述
    查看主板序列号:
    wmic baseboard get serialnumber
    在这里插入图片描述
    查看网卡信息:
    wmic nicconfig get macaddress
    在这里插入图片描述
    通过Python获取

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    import os, sys
    import wmi
    c = wmi.WMI()
    
    
    # 处理器
    def printCPU():
        tmpdict = {}
        tmpdict["CpuCores"] = 0
        for cpu in c.Win32_Processor():     
            tmpdict["cpuid"] = cpu.ProcessorId.strip()
            tmpdict["CpuType"] = cpu.Name
            tmpdict['systemName'] = cpu.SystemName
            try:
                tmpdict["CpuCores"] = cpu.NumberOfCores
            except:
                tmpdict["CpuCores"] += 1
            tmpdict["CpuClock"] = cpu.MaxClockSpeed 
            tmpdict['DataWidth'] = cpu.DataWidth
        print (tmpdict)
        return  tmpdict
    
    
    # 主板
    def printMain_board():
        boards = []
        # print len(c.Win32_BaseBoard()):
        for board_id in c.Win32_BaseBoard():
            tmpmsg = {}
            tmpmsg['UUID'] = board_id.qualifiers['UUID'][1:-1]  # 主板UUID,有的主板这部分信息取到为空值,ffffff-ffffff这样的
            tmpmsg['SerialNumber'] = board_id.SerialNumber  # 主板序列号
            tmpmsg['Manufacturer'] = board_id.Manufacturer  # 主板生产品牌厂家
            tmpmsg['Product'] = board_id.Product  # 主板型号
            boards.append(tmpmsg)
        print (boards)
        return boards
    
    
    # BIOS
    def printBIOS():
        bioss = []
        for bios_id in c.Win32_BIOS():
            tmpmsg = {}
            tmpmsg['BiosCharacteristics'] = bios_id.BiosCharacteristics  # BIOS特征码
            tmpmsg['version'] = bios_id.Version  # BIOS版本
            tmpmsg['Manufacturer'] = bios_id.Manufacturer.strip()  # BIOS固件生产厂家
            tmpmsg['ReleaseDate'] = bios_id.ReleaseDate  # BIOS释放日期
            tmpmsg['SMBIOSBIOSVersion'] = bios_id.SMBIOSBIOSVersion  # 系统管理规范版本
            bioss.append(tmpmsg)
        print (bioss)
        return bioss
    
    
    # 硬盘
    def printDisk():
        disks = []
        for disk in c.Win32_DiskDrive():
            # print disk.__dict__
            tmpmsg = {}
            tmpmsg['SerialNumber'] = disk.SerialNumber.strip()
            tmpmsg['DeviceID'] = disk.DeviceID
            tmpmsg['Caption'] = disk.Caption
            tmpmsg['Size'] = disk.Size
            tmpmsg['UUID'] = disk.qualifiers['UUID'][1:-1]
            disks.append(tmpmsg)
        for d in disks:
            print (d)
        return disks
    
    
    # 内存
    def printPhysicalMemory():
        memorys = []
        for mem in c.Win32_PhysicalMemory():
            tmpmsg = {}
            tmpmsg['UUID'] = mem.qualifiers['UUID'][1:-1]
            tmpmsg['BankLabel'] = mem.BankLabel
            tmpmsg['SerialNumber'] = mem.SerialNumber.strip()
            # tmpmsg['ConfiguredClockSpeed'] = mem.ConfiguredClockSpeed
            tmpmsg['Capacity'] = mem.Capacity
            # tmpmsg['ConfiguredVoltage'] = mem.ConfiguredVoltage
            memorys.append(tmpmsg)
        for m in memorys:
            print (m)
        return memorys
    
    
    # 电池信息,只有笔记本才会有电池选项
    def printBattery():
        isBatterys = False
        for b in c.Win32_Battery():
            isBatterys = True
        return isBatterys
    
    
    # 网卡mac地址:
    def printMacAddress():
        macs = []
        for n in  c.Win32_NetworkAdapter():
            mactmp = n.MACAddress
            if mactmp and len(mactmp.strip()) > 5:
                tmpmsg = {}
                tmpmsg['MACAddress'] = n.MACAddress
                tmpmsg['Name'] = n.Name
                tmpmsg['DeviceID'] = n.DeviceID
                tmpmsg['AdapterType'] = n.AdapterType
                tmpmsg['Speed'] = n.Speed
                macs.append(tmpmsg)
        print (macs)
        return macs
    
    
    def main():
    
        printCPU()
        printMain_board()
        printBIOS()
        printDisk()
        printPhysicalMemory()
        printMacAddress()
        printBattery()
    
    
    if __name__ == '__main__':
        main()
    
    

    在这里插入图片描述

  • 相关阅读:
    MyBatis缓存
    MyBatis动态SQL
    MyBatis中#{}和${}的区别
    MyBatis映射配置文件详解
    MyBatis核心配置文件详解
    MyBatis动态代理
    KO ------- 表中字段名和实体类属性名不一致
    对实体类的CRUD操作
    MyBatis配置数据源的两种方式
    MyBatis入门
  • 原文地址:https://www.cnblogs.com/gmhappy/p/11863965.html
Copyright © 2011-2022 走看看