zoukankan      html  css  js  c++  java
  • python

    在域环境下,可以通过命名空间+对方主机名的方式获取主机的配置信息

    import wmi
    
    # 在域环境内 可以直接通过命名空间+主机名的方式直接获取域中信任主机的配置信息
    class ComputerMessage(object):
    
        Cname = ""
        namespace = ""
        client = ""
        msg = {}
    
        # 系统信息:系统版本,主机名,系统安装时间,系统位数,串口ID,总内存大小
        system = ['Caption', 'CSName', 'InstallDate', 'OSArchitecture', 'WindowsDirectory', 'SerialNumber']
    
        # # CPU
        cpu = ['Name']
    
        # # 内存参数:
        memory = ['Capacity','Manufacturer', 'PartNumber', 'SerialNumber', 'Speed', 'Tag', ]
    
        # # {盘符num:{磁盘型号,接口类型,磁盘容量}}
        disk = ['Caption', 'InterfaceType', 'Size']
    
        # #网卡信息 : 网关,网卡卡槽,是否开启DHCP,DNS,IPadd,MASk,MAC
        network = ['DefaultIPGateway', 'Description', 'DHCPEnabled', 'DNSServerSearchOrder', 'IPAddress', 'IPSubnet', 'MACAddress']
    
        # # BIOS 信息: BIOS版本,BIOS厂商
        bios = ['BIOSVersion', 'Manufacturer', ]
    
        def __init__(self, computername):
            self.Cname = computername
            self.namespace = "rootcimv2"
            self.client = wmi.WMI(computer=self.Cname,namespace=self.namespace)
    
        def GetSysMessage(self):
            system_msg = []
            for sys in self.client.Win32_OperatingSystem():
                for i in self.system:
                    if i == 'InstallDate':
                        system_msg.append(getattr(sys,i).split('.')[0])
                    elif i == 'TotalVisibleMemorySize':
                        system_msg.append("%sGB"% round(int(getattr(sys, i))/(1024*1024)))
                    else:
                        system_msg.append(getattr(sys, i))
            self.msg["sys_msg"] = dict(zip(self.system, system_msg))
    
        def GetCpuMessage(self):
            for i in self.client.Win32_Processor():
                self.msg['cpu'] = i.name
    
    
        def GetMemoryMessage(self):
            m2 = {}
            for i in enumerate(self.client.Win32_PhysicalMemory()):
                m1 = []
                for i2 in self.memory:
                    if i2 == 'Capacity':
                        m1.append(round(int(getattr(i[1], i2)) / 1024 / 1024 / 1024))
                    elif i2 == 'PartNumber':
                        m1.append(getattr(i[1], i2).strip())
                    else:
                        m1.append(getattr(i[1], i2))
                m2["memory%s"%i[0]] = dict(zip(self.memory, m1))
            self.msg.update(m2)
    
        def GetStorigeMessage(self):
            disk_count = {}
            for i in enumerate(self.client.Win32_DiskDrive()):
                disk_msg = []
                for i2 in self.disk:
                    if i2 == 'Size':
                        disk_msg.append("%s GB" % round(int(getattr(i[1], i2))/(1024*1024*1024)))
                    else:
                        disk_msg.append(getattr(i[1], i2))
                disk_count["disk%s" % i[0]] = dict(zip(self.disk, disk_msg))
            self.msg.update(disk_count)
    
        def GetNetworkMessage(self):
            n2 = {}
            for i in enumerate(self.client.Win32_NetworkAdapterConfiguration(IPEnabled=1)):
                n1 = []
                for i2 in self.network:
    
                    if i2 == 'IPSubnet':
                        n1.append(getattr(i[1], i2)[0])
                    elif i2 == 'IPAddress':
                        n1.append(getattr(i[1], i2)[0])
                    elif i2 == 'DefaultIPGateway':
                        if getattr(i[1], i2) is not None:
                            n1.append(getattr(i[1], i2)[0])
                        else:
                            n1.append(getattr(i[1], i2))
                    else:
                        n1.append(getattr(i[1], i2))
                n2["network%s" % i[0]] = dict(zip(self.network, n1))
            self.msg.update(n2)
    
        def GetBiosMessage(self):
            b = self.client.Win32_BIOS()
            b1 = []
            for i in b:
                for i2 in self.bios:
                    b1.append(getattr(i, i2))
            self.msg['BIOS'] = dict(zip(self.bios,b1))
    
    
    # ceshi = ComputerMessage("hequn")
    # ceshi.GetMemoryMessage()
    # print(ceshi.msg)
  • 相关阅读:
    函数的定义
    函数名的本质
    函数进阶
    三元运算
    数据类型 补充
    安装python问题
    neo4j nosql图数据库学习
    ubutun lunix 64安装neo4j 图形数据库
    git error: object file .git/objects/b9/e269f50db2a3415cc8ad5ba40b82b9b6a13d45 is empty
    django orm 时间处理
  • 原文地址:https://www.cnblogs.com/Anec/p/13822150.html
Copyright © 2011-2022 走看看