zoukankan      html  css  js  c++  java
  • python在windows下获取cpu、硬盘、bios、主板序列号

    测试

    此处使用的是wmi库,可以去google里面搜索“python wmi”

    import os, sys
    import time
    import wmi,zlib

    def get_cpu_info() :
              tmpdict = {}
              tmpdict["CpuCores"] = 0
              c = wmi.WMI()
    #          print c.Win32_Processor().['ProcessorId']
    #          print c.Win32_DiskDrive()
              for cpu in c.Win32_Processor():     
        #                print cpu
                        print "cpu id:", cpu.ProcessorId.strip()
                        tmpdict["CpuType"] = cpu.Name
                        try:
                                  tmpdict["CpuCores"] = cpu.NumberOfCores
                        except:
                                  tmpdict["CpuCores"] += 1
                                  tmpdict["CpuClock"] = cpu.MaxClockSpeed 
                                  return tmpdict
     
    def _read_cpu_usage():
              c = wmi.WMI ()
              for cpu in c.Win32_Processor():
                        return cpu.LoadPercentage
     
    def get_cpu_usage():
              cpustr1 =_read_cpu_usage()
              if not cpustr1:
                        return 0
              time.sleep(2)
              cpustr2 = _read_cpu_usage()
              if not cpustr2:
                        return 0
              cpuper = int(cpustr1)+int(cpustr2)/2
              return cpuper
    def get_disk_info():
              tmplist = []
              encrypt_str = ""
              c = wmi.WMI ()
              for cpu in c.Win32_Processor():

    #cpu 序列号
                        encrypt_str = encrypt_str+cpu.ProcessorId.strip()
                        print "cpu id:", cpu.ProcessorId.strip()
              for physical_disk in c.Win32_DiskDrive():
                        encrypt_str = encrypt_str+physical_disk.SerialNumber.strip()

    #硬盘序列号
                        print 'disk id:', physical_disk.SerialNumber.strip()
                        tmpdict = {}
                        tmpdict["Caption"] = physical_disk.Caption
                        tmpdict["Size"] = long(physical_disk.Size)/1000/1000/1000
                        tmplist.append(tmpdict)
              for board_id in c.Win32_BaseBoard():

    #主板序列号
                        encrypt_str = encrypt_str+board_id.SerialNumber.strip()
                        print "main board id:",board_id.SerialNumber.strip()
    #          for mac in c.Win32_NetworkAdapter():

    #mac 地址(包括虚拟机的)
    #                    print "mac addr:", mac.MACAddress:
              for bios_id in c.Win32_BIOS():

    #bios 序列号
                        encrypt_str = encrypt_str+bios_id.SerialNumber.strip()
                        print "bios number:", bios_id.SerialNumber.strip()
              print "encrypt_str:", encrypt_str

    #加密算法
              print zlib.adler32(encrypt_str)
              return encrypt_str 
    if __name__ == "__main__":
    #     a = get_cpu_info()
         get_disk_info()

  • 相关阅读:
    js判断时间间隔
    redis 常用命令
    Spring 启动 自动调用方法的两种形式
    多线程的异常处理
    多线程Monitor.TryEnter(有一个聪明的员工找老板。看到老板们在里面都掐成一团乱麻了,算了我还是撩吧)
    多线程中多个join的执行过程
    多线程之向线程传递参数
    ASP.Net Core下的安全(授权、身份验证、ASP.NET Core Identity)
    C# 中常用的索引器(转)
    《戏班的故事》C#基础之多线程之“前台线程-后台线程”
  • 原文地址:https://www.cnblogs.com/testlife007/p/5702568.html
Copyright © 2011-2022 走看看