python使用WMI检测windows系统信息、硬盘信息、网卡信息的方法

1053次阅读  |  发布于5年以前

本文实例讲述了python使用WMI检测windows系统信息、硬盘信息、网卡信息的方法。分享给大家供大家参考。具体实现方法如下:


    #!/usr/bin/env python 
    # -*- coding: utf-8 -*- 
    import wmi 
    import sys,time,platform 
    def get_system_info(os): 
      """ 
      获取操作系统版本。 
      """ 
      print 
      print "Operating system:" 
      if os == "Windows": 
        c = wmi.WMI () 
        for sys in c.Win32_OperatingSystem(): 
          print '\t' + "Version :\t%s" % sys.Caption.encode("GBK") 
          print '\t' + "Vernum :\t%s" % sys.BuildNumber 
    def get_memory_info(os): 
      """ 
      获取物理内存和虚拟内存。 
      """ 
      print 
      print "memory_info:" 
      if os == "Windows": 
        c = wmi.WMI () 
        cs = c.Win32_ComputerSystem() 
        pfu = c.Win32_PageFileUsage() 
        MemTotal = int(cs[0].TotalPhysicalMemory)/1024/1024 
        print '\t' + "TotalPhysicalMemory :" + '\t' + str(MemTotal) + "M" 
        #tmpdict["MemFree"] = int(os[0].FreePhysicalMemory)/1024 
        SwapTotal = int(pfu[0].AllocatedBaseSize) 
        print '\t' + "SwapTotal :" + '\t' + str(SwapTotal) + "M" 
        #tmpdict["SwapFree"] = int(pfu[0].AllocatedBaseSize - pfu[0].CurrentUsage) 
    def get_disk_info(os): 
      """ 
      获取物理磁盘信息。 
      """ 
      print 
      print "disk_info:" 
      if os == "Windows": 
        tmplist = [] 
        c = wmi.WMI () 
        for physical_disk in c.Win32_DiskDrive(): 
          if physical_disk.Size: 
            print '\t' + str(physical_disk.Caption) + ' :\t' + str(long(physical_disk.Size)/1024/1024/1024) + "G" 
    def get_cpu_info(os): 
      """ 
      获取CPU信息。 
      """ 
      print 
      print "cpu_info:" 
      if os == "Windows": 
        tmpdict = {} 
        tmpdict["CpuCores"] = 0 
        c = wmi.WMI () 
        for cpu in c.Win32_Processor():       
          tmpdict["CpuType"] = cpu.Name 
        try: 
          tmpdict["CpuCores"] = cpu.NumberOfCores 
        except: 
          tmpdict["CpuCores"] += 1 
          tmpdict["CpuClock"] = cpu.MaxClockSpeed   
        print '\t' + 'CpuType :\t' + str(tmpdict["CpuType"]) 
        print '\t' + 'CpuCores :\t' + str(tmpdict["CpuCores"]) 
    def get_network_info(os): 
      """ 
      获取网卡信息和当前TCP连接数。 
      """ 
      print 
      print "network_info:" 
      if os == "Windows": 
        tmplist = [] 
        c = wmi.WMI () 
        for interface in c.Win32_NetworkAdapterConfiguration (IPEnabled=1): 
            tmpdict = {} 
            tmpdict["Description"] = interface.Description 
            tmpdict["IPAddress"] = interface.IPAddress[0] 
            tmpdict["IPSubnet"] = interface.IPSubnet[0] 
            tmpdict["MAC"] = interface.MACAddress 
            tmplist.append(tmpdict) 
        for i in tmplist: 
          print '\t' + i["Description"] 
          print '\t' + '\t' + "MAC :" + '\t' + i["MAC"] 
          print '\t' + '\t' + "IPAddress :" + '\t' + i["IPAddress"] 
          print '\t' + '\t' + "IPSubnet :" + '\t' + i["IPSubnet"] 
        for interfacePerfTCP in c.Win32_PerfRawData_Tcpip_TCPv4(): 
            print '\t' + 'TCP Connect :\t' + str(interfacePerfTCP.ConnectionsEstablished) 
    if __name__ == "__main__": 
      os = platform.system() 
      get_system_info(os) 
      get_memory_info(os) 
      get_disk_info(os) 
      get_cpu_info(os) 
      get_network_info(os) 

希望本文所述对大家的Python程序设计有所帮助。

Copyright© 2013-2020

All Rights Reserved 京ICP备2023019179号-8