• 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)
  • 相关阅读:
    C语言常用函数-ispunct()判断字符是否为标点符号函数
    C语言常用函数-isupper()判断字符是否为大写英文字母函数
    C语言常用函数-isprint()判断字符是否为可打印字符(含空格)函数
    C语言常用函数-islower()判断字符是否为小写英文字母函数
    C语言常用函数-isgraph()判断字符是否为除空格外的可打印字符函数
    get请求多参数循环拼接
    数据库字段转驼峰命名
    React钩子函数问题,解决父组件实时更新子组件的值
    关于react 父级组件更新数据触发子组件更新渲染问题
    Jquery的ajax 方法
  • 原文地址:https://www.cnblogs.com/Anec/p/13822150.html
Copyright © 2020-2023  润新知