PYTHON调用WIM对象获取WINDOWS系统的相关信息并打印到EXCEL
2018-02-05 09:54
603 查看
本人原创
前提:相关的网络端口须得开放方能正常调用
前提:相关的网络端口须得开放方能正常调用
# -*- coding: utf-8 -*- import os,sys reload(sys) sys.setdefaultencoding('utf8') import time import wmi import xlsxwriter #写EXCEL用到 def get_cmp_info(host,uname,pwd): tmplist = {} try: # c = wmi.WMI(computer="localhost") c = wmi.WMI(computer=host,user=uname,password=pwd) tmplist["cmptype"] = gettype(c) tmplist["ip"]=host tmplist["factory"] = getfactory(c) tmplist["cpus"]=getcpus(c) tmplist["cpuname"]=getcpuname(c) disks=[] disks=getdisks(c) tmplist["alldisk"]=str(disks[0])+"G" tmplist["usedisk"]=str(disks[1])+"G" tmplist["diskp"]=str(disks[2])+"%" mem=[] mem=getmemory(c) tmplist["memory"]=mem[0] tmplist["pmem"]=mem[1] tmplist["hostnames"]=getcmpname(c) tmplist["domains"]=getdomain(c) tmplist["os"]=getsystemname(c) tmplist["86or64"]=getx86or64(c) cpuuse=[] cpuuse=getcpuuse(c) tmplist["cpunum"]=cpuuse[0] tmplist["cpuuse"]=cpuuse[1] tmplist["sn"]=getsn(c) return tmplist except Exception: tmplist["cmptype"] = "None" tmplist["ip"]="None" tmplist["factory"] = "None" tmplist["cpus"]="None" tmplist["cpuname"]="None" tmplist["alldisk"]="None" tmplist["usedisk"]="None" tmplist["diskp"]="None" tmplist["memory"]="None" tmplist["pmem"]="None" tmplist["hostnames"]="None" tmplist["domains"]="None" tmplist["os"]="None" tmplist["86or64"]="None" tmplist["cpunum"]="None" tmplist["cpuuse"]="None" tmplist["sn"]="None" return tmplist def gettype(c): try: for cmptype in c.win32_computersystemproduct(): return cmptype.name except Exception: return "None" def getsystemname(c): try: for sys in c.Win32_OperatingSystem(): a=str(sys.Caption.encode("UTF-8")) return a except Exception: return "None" def getx86or64(c): try: #for sys in c.Win32_OperatingSystem(): for sys in c.win32_processor(): #return str(sys.OSArchitecture.encode("UTF")) < 4000 span style="color:#cc7832;">return str(sys.addresswidth) except Exception: return "None" def getfactory(c): try: for factorys in c.win32_baseboard(): return factorys.Manufacturer except Exception: return "None" def getsn(c): try: for bios_id in c.Win32_BIOS(): return bios_id.SerialNumber.strip() except Exception: return "None" def getcpuuse(c): cu=0 cn=0 try: for cpu in c.Win32_Processor(): cl=int(cpu.LoadPercentage) cu=cl+cu cn=cn+1 l1=[] l1.append(str(cn)) cp=str(int(cu/cn))+"%" l1.append(cp) return l1 except Exception: l1=[] l1.append("0") l1.append("0") return l1 def getmemory(c): memall=0 try: for Memory in c.Win32_PhysicalMemory(): memall=int(int(Memory.Capacity)+memall) os = c.Win32_OperatingSystem() umem=int(int(os[0].FreePhysicalMemory)/1024/10.24) memall=int(memall/1024/1024/1024) memp = str(100-int(int(umem)/int(memall))) + "%" l1=[] l1.append(str(memall)+"G") l1.append(memp) return l1 except Exception: l1=[] l1.append("0") l1.append("0") return l1 def getcpus(c): cpunum=0 try: for cpus in c.Win32_Processor(): cores=cpus.NumberOfCores cpunum=cores+cpunum return cpunum except Exception: return "None" def getcpuname(c): try: for cpus in c.Win32_Processor(): return cpus.Name except Exception: return "None" def getcmpname(c): try: for cmpname in c.win32_computersystem(): return cmpname.Name except Exception: return "None" def getdomain(c): try: for cmpname in c.win32_computersystem(): return cmpname.Domain except Exception: return "None" def getdisks(c): alldisk=0 usedisk=0 try: for physical_disk in c.Win32_DiskDrive(): for partition in physical_disk.associators("Win32_DiskDriveToDiskPartition"): for logical_disk in partition.associators("Win32_LogicalDiskToPartition"): a1=int(logical_disk.Size)/1024/1024/1024 u1=(int(logical_disk.Size)-int(logical_disk.FreeSpace))/1024/1024/1024 alldisk=alldisk+a1 usedisk=usedisk+u1 p=int(int(usedisk)*100/int(alldisk)) l1=[] l1.append(alldisk) l1.append(usedisk) l1.append(p) return l1 except Exception: l1=[] l1.append("0") l1.append("0") l1.append("0") return l1 # get_cmp_info("1","2","3") # c = wmi.WMI(computer="localhost") # getmemory(c) def trywex(): workbook1 = xlsxwriter.Workbook("c:\computers.xlsx") worksheet = workbook1.add_worksheet() title=[u'IP地址',u'主机名',u'域名',u'制造商',u'型号',u'CPU',u'CPU个数',u'CPU核心数',u'CPU使用率',u'内存G',u'内存使用率'\ ,u'硬盘容量G',u'硬盘使用量',u'硬盘使用百分比',u'操作系统',u'X8664',u'序列号']
#CPU的个数,和CPU核心数这两样数据和操作系统的类型有关,经常不是很准,不建议采纳 format=workbook1.add_format() worksheet.set_column(0,15,20) format.set_bold() worksheet.write_row('A1',title,format) row=1 col=1 myfile=open('c:\pwd.txt','r')
#这样不太安全,最好加采取对字密码字段加密并存放于数据库中,从数据库中读出来以后再解密
for line in myfile: con=line.split() h=con[0].strip() u=con[1].strip() p=con[2].strip() a={} # worksheet.write(row,0,h) a=get_cmp_info(h,u,p) worksheet.write(row,0,a["ip"]) worksheet.write(row,col,a["hostnames"]) worksheet.write(row,col+1,a["domains"]) worksheet.write(row,col+2,a["factory"]) worksheet.write(row,col+3,a["cmptype"]) worksheet.write(row,col+4,a["cpuname"]) worksheet.write(row,col+5,a["cpunum"]) worksheet.write(row,col+6,a["cpus"]) worksheet.write(row,col+7,a["cpuuse"]) worksheet.write(row,col+8,a["memory"]) worksheet.write(row,col+9,a["pmem"]) worksheet.write(row,col+10,a["alldisk"]) worksheet.write(row,col+11,a["usedisk"]) worksheet.write(row,col+12,a["diskp"]) # print a["os"] worksheet.write(row,col+13,a["os"]) worksheet.write(row,col+14,a["86or64"]) worksheet.write(row,col+15,a["sn"]) row=row+1 workbook1.close() if __name__=="__main__": trywex()
相关文章推荐
- python用WMI等获取及修改windows系统信息
- python使用wmi模块获取windows下的系统信息 监控系统
- Python利用系统命令获取文件(夹)信息以及Python对Excel的简单操作
- C语言获取windows系统的相关信息
- 获取windows系统处理器相关信息 GetSystemInfo(SYSTEM_INFO &si)
- python使用wmi模块获取windows下的系统信息 监控系统
- c++里的system()函数调用系统命令如何获取打印信息
- Python用WMI模块获取Windows系统的硬件信息
- Python WMI获取Windows系统信息 监控系统
- windows系统调用 获取当前内存信息
- Python WMI获取Windows系统信息 监控系统
- 利用Python脚本获取Windows和Linux的系统版本信息 推荐
- Python获取Linux或Windows系统的基本信息
- python利用platform模块获取windows系统信息
- Python WMI获取Windows系统信息
- 复制自身程序到windows目录和系统目录,获取系统的相关信息
- python在windows下获取当前系统用户名
- 获取Windows系统的进程运行信息
- delphi获取windows系统版本信息,大全,准确
- 获取Windows系统的进程运行信息