python利用WMI等监控获取windows状态如CPU、内存、硬盘等信息
安装pywin32库
下载地址: https://sourceforge.net/projects/pywin32/files%2Fpywin32/
选择对应python版本的文件。
下载后在windows安装好。
安装wmi库
下载地址:https://pypi.python.org/pypi/WMI/#downloads
下载后在windows安装好。
测试安装结果
import win32api
import wmi
如果没有报错就是安装好了。
查询可用类
import wmi
myWmi= wmi.WMI()
for cls in myWmi.classes:print(cls) # 可以显示如下的可用类(省略),常用;
- Win32_Processor 查CPU
- Win32_ComputerSystem 查内存
- Win32_LogicalDisk 查硬盘
查询CPU信息
从上面的可用类,有一个Win32_Processor
cpuArr = myWmi.Win32_Processor()
查出来之后,它有哪些属性可用?比方说,cpu的名字,几核? 这时候要到MSDN查WMI资料,地址:https://msdn.microsoft.com/en-us/library/aa394373(v=vs.85).aspx
- uint32 MaxClockSpeed;
- string Name;
uint32 NumberOfCores;
for cpu in cpuArr : print('cpu:', cpu.loadPercentage, cpu.numberOfCores, cpu.name, cpu.maxClockSpeed/1000) # 上面查的属性名,首字母在python中变为小写. # cpu: 10 2 Intel(R) Pentium(R) CPU G3260 @ 3.30GHz 3.3
其他
比如查服务,查进程,查硬盘,方法同上
连接到另一台远程电脑
wmiService = wmi.WMI("192.168.0.1", user=r"administrator", password="123456")
#-*- coding:utf-8 -*-import timeimport datetimeimport reimport subprocessimport sysimport wmiimport osimport ConfigParserimport _winregimport win32netimport win32apiimport win32conimport win32netconimport win32security#DEBUG=True#DEBUG=False#LOGFILE=r'c:\win.log'TIME_FORMAT=r'%Y-%m-%d %H:%M:%S'#c=wmi.WMI(privileges=["Admin","Shutdown","Security"])#实例化wmi类c=wmi.WMI()#定义myWmi类并返回实例化对象class myWmi(object): #定义构造器 def __init__(self,wmiclass,info={},name=""): if name: self.obj=wmiclass(Name=name) else: self.obj=wmiclass() self.info=info return self.obj#定义myOs类用于系统信息查询及设置class myOs(object): #定义构造器 def __init__(self,wmiobj=c,info={}): #创建wmi实例 self.obj=wmiobj.Win32_OperatingSystem()[0] #用于获取计算机运行环境信息 self.cobj=wmiobj.Win32_ComputerSystem()[0] #用于获取计算机CPU数量,内存大小,主板相关信息 self.disk_obj= wmiobj.Win32_DiskDrive() #用于获取硬盘相关信息 self.Partition_obj= wmiobj.Win32_LogicalDisk() #用于获取分区相关信息 self.networkAdapter_obj = wmiobj.Win32_NetworkAdapterConfiguration (IPEnabled=1) #用于配置及获取网络连接相关信息 self.process_obj = wmiobj.Win32_Processor()[0] #用于获取CPU详细信息 self.update_obj = wmiobj.Win32_QuickFixEngineering() #用于获取windows更新补丁相关信息 self.info=info #定义用于存放配置信息的字典 def get_os_info(self): """ 返回系统相关信息 """ self.info["os"]=self.obj.Caption #获取系统版本 self.info["version"]=self.obj.CSDVersion #操作系统更新版本 self.info["fullname"]=self.obj.CSName #获取计算机名 self.info["localtime"]=datetime.datetime.strptime(str(str(self.obj.LocalDateTime ).split('.')[0]),'%Y%m%d%H%M%S') #获取系统本地时间 self.info["lastboottime"]=datetime.datetime.strptime(str(str(self.obj.LastBootUpTime ).split('.')[0]),'%Y%m%d%H%M%S') #获取系统上次启动时间 self.info["os_architecture"]=self.obj.OSArchitecture #获取操作系统类型(32bit/64bit) self.info["mu_languages"]=self.obj.MUILanguages[0] #获取操作系统语言版本 self.info["SerialNumber"]=self.obj.SerialNumber #获取操作系统序列号 self.info["cpu_count"]=self.cobj.NumberOfProcessors #获取cpu数量 self.info["mainboard"]=self.cobj.Manufacturer #获取主板厂商信息 self.info["board_model"]=self.cobj.Model #获取主板型号 self.info["systemtype"]=self.cobj.SystemType #获取主板架构类型 self.info["physical_memory"]=int(self.cobj.TotalPhysicalMemory)/1024/1024 #获取内存容量 self.info["cpu_name"] = self.process_obj.Name #获取cpu类型 self.info["clock_speed"] = self.process_obj.MaxClockSpeed #获取操作系统主频 self.info["number_core"] = self.process_obj.NumberOfCores #获取核心数量 self.info["data_width"] = self.process_obj.DataWidth #获取计算机的CPU数据宽度 self.info["socket_desigination"] = self.process_obj.SocketDesignation #获取主板cpu接口类型 self.info["l2_cache"] = self.process_obj.L2CacheSize #获取cpu二级缓存大小 self.info["l3_cache"] = self.process_obj.L3CacheSize #获取cpu三级缓存大小 return self.info #打印补丁更新信息 def update_information(self): output=open(log_path,"a+") output.write('\n') output.write('[Update information]\r\n') for s in self.update_obj: output.write('%-10s %-10s %-20s %-10s\n' %(s.HotFixID,s.InstalledOn,s.Description,s.InstalledBy)) output.write('\n') #打印磁盘信息 def get_diskinfo(self): for item in self.disk_obj: output=open(log_path,"a+") output.write('\n') output.write('[disk info]\r\n') for item in self.disk_obj: output.write('%-25s Partition: %-3s SN: %-30s %-3sG\n' %(item.Caption,str(item.Partitions),item.SerialNumber,str(int(item.Size)/1024/1024/1024))) #output.write('%-30s Partition: %-5s SN: %-30s %-10s G\n' %(item.Caption,str(item.Partitions),item.SerialNumber,str((item.Size)/1024/1024/1024))) output.write('\n') break #打印磁盘分区信息 def get_partitioninfo(self): Partition_count = len(self.Partition_obj) output=open(log_path,"a+") output.write('\n') output.write('[Partition info]\r\n') output.write('\r\n') for x in range(len(self.Partition_obj)): if self.Partition_obj[x].DriveType == 3: output.write('DeviceID = %-4s FileSystem = %-5s TotalSize = %-1sG FreeSpace = %-1sG\n' %(self.Partition_obj[x].DeviceID,self.Partition_obj[x].FileSystem,str(int(self.Partition_obj[x].Size)/1024/1024/1024),str(int(self.Partition_obj[x].FreeSpace)/1024/1024/1024))) output.write('\n') #打印网络配置信息 def get_networkadapter(self): output=open(log_path,"a+") output.write('\n') output.write('[network info]\r\n') for interface in self.networkAdapter_obj: output.write('IP Address: %-10s\n' %interface.IPAddress[0]) output.write('NET Mask: %-10s\n' %interface.IPSubnet[0]) output.write('Gateway: %-10s\n' %interface.DefaultIPGateway) output.write('Pri DNS: %-10s\n' %str(interface.DNSServerSearchOrder[0])) output.write('Sec DNS: %-10s\n' %str(interface.DNSServerSearchOrder[1])) output.write('Real Mac: %-10s\n' %interface.MACAddress) output.write('\n') break #强制关机 def win32shutdown(self): self.obj.Win32Shutdown() #重启操作系统 def reboot(self): self.obj.Reboot() #关闭操作系统 def shutdown(self): self.obj.Shutdown()#定义network_config类用于网络设置信息查询及设置class network_config(object): #定义构造器 def __init__(self,wmiobj=c): #实例化对象 self.obj = wmiobj.Win32_NetworkAdapterConfiguration #设置LMHOSTS def config_setup(self): self.obj.EnableWINS(WINSEnableLMHostsLookup=False) #设置dns def tcp_config(self): interfaces = c.Win32_NetworkAdapterConfiguration(IPEnabled=True) device_count = len(interfaces) start_num = 0 dns = ['202.106.196.115','202.106.0.20'] while True: for first_if in interfaces: dns_result = first_if.SetDNSServerSearchOrder(DNSServerSearchOrder = dns) netbios_result = first_if.SetTcpipNetbios(TcpipNetbiosOptions = 2) start_num += 1 if start_num > device_count: break return dns_result,netbios_result############################## ## Service ## ###############################定于myService()类用于系统服务检查及设置class myService(object): """ control system service """ #定义构造器 def __init__(self,name="",wmiobj=c,**kargs): self.name=name kargs={} args="" if self.name: self.obj=wmiobj.Win32_Service(Name=self.name)[0] #obj in the list elif kargs: for key in kargs: args+=key+'='+'"'+kargs[key]+'"'+',' args=args[:-1] cmd="wmiobj.Win32_Service("+args+")" self.obj=eval(cmd) else: self.obj=wmiobj.Win32_Service() def get_service_info(self): service_list=[] for ser in self.obj: service_dict={} service_dict["name"]=ser.Name service_dict["displayname"]=ser.Caption service_dict["pid"]=ser.ProcessID service_dict["stat"]=ser.State service_dict["startmode"]=ser.StartMode service_list.append(service_dict) return service_list #获取系统服务状态 def status(self): return self.obj.State #启动服务 def start(self): self.obj.StartService() #停止服务 def stop(self): self.obj.StopService() #关闭黑名单中系统服务 def change_mode(self,mode): blacklist_path = sys.path[0]+'/data/svr_blacklist.txt' f=open(blacklist_path) svr_blacklist = f.readlines() f.close() for b in svr_blacklist: b = b.strip() for s in self.obj: if b in s.Name: """ Three mode available: Auto, Manual and Disabled """ s.ChangeStartMode(mode) else: continue break #obj.ChangeStartMode(mode) #删除系统服务 def delete(self): print "You should not delete a service, stop it instead." ############################## ## Process ## ###############################定义myProcess类用于进程查看class myProcess(myWmi): def __init__(self,name=""): self.name=name myWmi.__init__(self,c.Win32_Process,name=self.name) def get_process_info(self): processlist=[] for process in self.obj: processlist.append((process.ProcessID,process.Name,process.CreationDate,process.ExecutablePath,process.Caption)) return processlist def get_process_owner(self): return self.obj[0].GetOwner() def terminate(self): self.obj[0].Terminate()############################## ## Software ## ###############################定义mySoft类用于安装软件检查class mySoft(myWmi): def __init__(self,name=""): self.name=name myWmi.__init__(self,c.Win32_Product,name=self.name) def get_software(self): softlist=[] for soft in self.obj: softlist.append((soft.Name,soft.InstallDate)) return softlist def uninstall(self): #self.obj[0].Uninstall() pass############################## ## User and Group ## ##############################'''def dump(dict): for key,value in dict.items(): print key,"=",str(value)'''#定义myAccount类用于帐号检查及设置class myAccount(myWmi): #类构造器 def __init__(self,name="",group=""): self.uname=name self.gname=group self.uobj=myWmi.__init__(self,c.Win32_UserAccount,name=self.uname) self.guobj=myWmi.__init__(self,c.Win32_GroupUser,name=self.gname) #返回账户列表 def show_user_list(self): ulist=[] for user in self.uobj: ulist.append(user.Name) return ulist #返回禁用的账户列表 def show_user_info(self,username): info=win32net.NetUserGetInfo(None,username,3) info["disabled"]=user.Disabled #Disabled is true means the account is disabled. info["status"]=user.Status return ulist #返回用户组 def show_user_in_group(self): gulist={} for gu in self.guobj: if gu.GroupComponent.Name not in gulist: gulist[gu.GroupComponent.Name]=[gu.PartComponent.Name] else: gulist[gu.GroupComponent.Name].append(gu.PartComponent.Name) return gulist #返回管理员用户列表 def show_userlist_admin(self): uresume = 0 while True: admin_list = [] users, total, uresume = win32net.NetLocalGroupGetMembers (None, 'Administrators', 0, uresume) for sid in (u['sid'] for u in users): username, domain, type = win32security.LookupAccountSid (None, sid) admin_list.append(username) return admin_list if uresume == 0: break #获取当前用户 def get_current_user(self): return win32api.GetUserName() #删除用户 def delete_user(self,username): win32net.NetUserDel(None,username) #添加用户 def add_user(self,name,passwd,flags=win32netcon.UF_NORMAL_ACCOUNT|win32netcon.UF_SCRIPT,privileges=win32netcon.USER_PRIV_ADMIN): udata={} #user info dict, can be gotten by win32net.NetUserGetInfo udata["name"]=name udata["password"]=passwd udata["flags"]=flags udata["priv"]=privileges win32net.NetUserAdd(None, 1, udata) #设置用户信息 def modify_user(self,username,udict,level=2): win32net.NetUserSetInfo(None,username,level,udict) #修改用户密码 def change_passwd(self,username,oldpass,newpass): win32net.NetUserChangePassword(None,username,oldpass,newpass) #重命名账户 def rename_user(self,oldname,newname): for item in self.uobj: if oldname in item.id: item.Rename('admin') else: continue############################## ## Registry ## ###############################定义myRegistry类用于注册表项目检查及设置class myRegistry(object): """ #print myRegistry().get_value(win32con.HKEY_LOCAL_MACHINE,r'SAM\SAM\Domains\Account\Users','Names') #myRegistry().add_key(_winreg.HKEY_LOCAL_MACHINE,'SOFTWARE\TJTG') #print myRegistry().list_keys(_winreg.HKEY_LOCAL_MACHINE,r'SAM\SAM\Domains\Account\Users\Names') #myRegistry().add_value(_winreg.HKEY_LOCAL_MACHINE,'SOFTWARE\TJTG','AtionName','TJ7PP') #myRegistry().delete_value(_winreg.HKEY_LOCAL_MACHINE,'SOFTWARE\TJTG','AtionName') #myRegistry().delete_key(_winreg.HKEY_LOCAL_MACHINE,'SOFTWARE\TJTG') #print myRegistry().get_value(_winreg.HKEY_LOCAL_MACHINE,r'SOFTWARE\Tracker Software\pdfxctrl.PdfPrinterPreferences','XCL_PATH') """ #定义构造函数 def __init__(self): #self.obj=wmi.Registry() self.obj=wmi.WMI(namespace='DEFAULT').StdRegProv #列出注册表项 def list_keys(self,root,subkey): result,names=self.obj.EnumKey(hDefKey=root,sSubKeyName=subkey) if result == 2: print "No such keys" return names #返回对应注册表项键值 def get_value(self,root,subkey,valuename,type="string"): if type == "string": result,value = self.obj.GetExpandedStringValue(hDefKey=root,sSubKeyName=subkey,sValueName=valuename) elif type == "dword": result,value = self.obj.GetDWORDValue(hDefKey=root,sSubKeyName=subkey,sValueName=valuename) else: result,value = self.obj.GetBinaryValue(hDefKey=root,sSubKeyName=subkey,sValueName=valuename) return value #添加注册表项 def add_key(self,root,subkey): return self.obj.CreateKey(hDefKey=root,sSubKeyName=subkey) #old value can be overwritten #设置键值 def set_value(self,root,subkey,valuename,value,type): if type == "string": value = self.obj.SetStringValue(hDefKey=root,sSubKeyName=subkey,sValueName=valuename,sValue=value) else: value = self.obj.SetDWORDValue(hDefKey=root,sSubKeyName=subkey,sValueName=valuename,uValue=value) return value #删除注册表项 def delete_key(self,root,subkey): return self.obj.DeleteKey(root,subkey) #删除键值 def delete_value(self,root,subkey,valuename): return self.obj.DeleteValue(root,subkey,valuename)#获取注册表中用户列表def get_sys_sid(): reg_user_list = myRegistry().list_keys(_winreg.HKEY_LOCAL_MACHINE,r'SAM\SAM\Domains\Account\Users') sid_admin = u'000001F4' reg_user_list.remove(sid_admin) length =len(reg_user_list) key_list = [] raw_pattern = re.compile(r'^00000') n = 0 while True: for m in reg_user_list: if raw_pattern.match(m): n += 1 if n < length: key_list.append(m) else: break break return key_list#检查克隆账户def chk_clone_account(): a = get_sys_sid() sid_value = myRegistry().get_value(_winreg.HKEY_LOCAL_MACHINE, r'SAM\SAM\Domains\Account\Users\000001F4', r'F','') #print sid_value #检查SID值是否为管理员SID值 for each_value in a: path = 'SAM\SAM\Domains\Account\Users\\'+ each_value key_value = myRegistry().get_value(_winreg.HKEY_LOCAL_MACHINE,path, r'F','') if sid_value == key_value: #print 'Clone Account SID is %s' %each_value return True else: continue #检查注册表项中是否有隐藏帐号 reg_user_list=myRegistry().list_keys(_winreg.HKEY_LOCAL_MACHINE,r'SAM\SAM\Domains\Account\Users\Names') ulist = myAccount().show_user_list() for user in reg_user_list: if user not in ulist: #print 'Clone Account is %s' %user return True############################## ## Win_Base_setup ## ###############################定义win_Base类用于系统基本配置class win_Base(): #实例化 def __init__(self): #?????ᄅW?????? self.cf=ConfigParser.ConfigParser() self.cf.read(sys.path[0]+'/data/win_reg.ini') #根据win_reg.ini中读取到的配置选项,修改对应注册表项及对应键值 def win_setup(self): #???????ᄅW?? section_start = 0 section_count = len(self.cf.sections()) section_item = self.cf.sections() for user in section_item: while True: for user in section_item: #?????ᄅW???ᄅW?????????? name = self.cf.get(user,"root") subkey = self.cf.get(user,"sub_key") valuename = self.cf.get(user,"value_name") regtype = self.cf.get(user,"reg_type") #???????ᄀ↑???? if name == 'HKEY_LOCAL_MACHINE': a = _winreg.HKEY_LOCAL_MACHINE elif name == 'HKEY_CLASSES_ROOT': a = _winreg.HKEY_CLASSES_ROOT elif name == 'HKEY_CURRENT_USER': a = _winreg.HKEY_CURRENT_USER else: return name #?????????? if regtype == "dword": value = int(self.cf.get(user,"value")) else: value = self.cf.get(user,"value") #???????ᄀ↑???? myRegistry().add_key(a,subkey) myRegistry().set_value(a,subkey,valuename,value,regtype) section_start += 1 if section_start == section_count: break############################## ## Startup ## ###############################定义show_startupcommand类用于系统启动项目检查def show_startupcommand(): startup_list=[] obj=c.Win32_StartupCommand() for s in obj: startup_info = {} startup_info['Name'] = s.Name startup_info['Command'] = s.Command #startup_info['Location'] = s.Location #startup_info['User'] = s.User startup_list.append(startup_info) #if s.Command not in startup_list: # start_value = s.Command + ' ' + s.Location # startup_list.append((start_value)) return startup_list '''startup_list=[] obj=c.Win32_StartupCommand() for s in obj: if s.Command not in startup_list: start_value = s.Command + ' ' + s.Location startup_list.append((start_value)) return startup_list'''############################## ## Audit Log ## ##############################def reg(string): """instance of Win32_NTLogEvent{ Category = 9; CategoryString = "Account Logon"; ComputerName = "MICROSOF-5524EC"; EventCode = 680; EventIdentifier = 680; EventType = 5; InsertionStrings = {"MICROSOFT_AUTHENTICATION_PACKAGE_V1_0", "joe", "MICROSOF-5524EC", "0xC000006A"}; Logfile = "Security"; Message = "Logon attempt by: MICROSOFT_AUTHENTICATION_PACKAGE_V1_0\n\nLogon account: joe\n\nSource Workstation: MICROSOF-5524EC\n\nError Code: 0xC000006A\n\n"; RecordNumber = 16267; SourceName = "Security"; TimeGenerated = "20100424000915.000000+480"; TimeWritten = "20100424000915.000000+480"; Type = "audit failure"; User = "NT AUTHORITY\\SYSTEM";};instance of Win32_NTLogEvent{ Category = 2; CategoryString = "Logon/Logoff"; ComputerName = "MICROSOF-5524EC"; EventCode = 529; EventIdentifier = 529; EventType = 5; InsertionStrings = {"joe", "MICROSOF-5524EC", "2", "Advapi ", "Negotiate", "MICROSOF-5524EC"}; Logfile = "Security"; Message = "Logon Failure:\n\n\tReason:\t\tUnknown user name or bad password\n\n\tUser Name:\tjoe\n\n\tDomain:\t\tMICROSOF-5524EC\n\n\tLogon Type:\t2\n\n\tLogon Process:\tAdvapi\n\n\tAuthentication Package:\tNegotiate\n\n\tWorkstation Name:\tMICROSOF-5524EC\n"; RecordNumber = 16251; SourceName = "Security"; TimeGenerated = "20100423091037.000000+480"; TimeWritten = "20100423091037.000000+480"; Type = "audit failure"; User = "NT AUTHORITY\\SYSTEM";}; regex=re.compile(r'(User Name|Logon account):\s*\w*') r=re.search(regex,string) if r: return r.group() else: return 0class myAuditLog(): def __init__(self): cc=wmi.WMI(privileges=["Security"]) self.obj=cc.Win32_NTLogEvent() #type'll be success or failure. def get_history(self,type): log_type={'success':4,'failure':5} s_log=[] for s in self.obj: if s.EventType == log_type[type]: m=reg(s.Message) if m: s_log.append(s.CategoryString+', '+reg(s.Message)+', '+s.TimeWritten+', '+s.Type) return s_log"""############################## ## Share ## ###############################定义myShare类用于共享检查及设置class myShare(myWmi): def __init__(self,name=""): myWmi.__init__(self,c.Win32_Share) def show_share(self): share_list=[] for s in self.obj: item_str = s.Name + ' ' +s.Path share_list.append(item_str) #print s.Name,'\t',s.Path return share_list def delete(self): for s in self.obj: s.Delete()"""def mycmd(cmd): try: p=subprocess.Popen(cmd,shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE) (stdoutput,erroutput)=p.communicate() except OSError: print "command %s wrong, check the command please!" % cmd return (stdoutput,erroutput)"""def log(log_file,log_string,description): try: f=open(log_file,'a+') #f.write(time.strftime(TIME_FORMAT)) f.write(description + '\n') f.write(str(log_string)) f.write('\n\n') #f.write(time.strftime(TIME_FORMAT)+' '+log_string+'\n') f.close() except IOError,e: print e #print "Can't open log file %s." % log_file sys.exit()def log_server(log_file,log_string): try: f=open(log_file,'a+') f.write(str(log_string)) f.close() except IOError,e: print e #print "Can't open log file %s." % log_file sys.exit()if __name__=='__main__': #log_path = sys.path[0]+'/data/win.log' log_path = r'c:\win.log' #网络配置 network_config().config_setup() network_config().tcp_config() #系统服务设置 myService().change_mode('disabled') #基础配置 win_Base().win_setup() #重命名管理员账户 t = myAccount() if 'Administrator' in t.show_userlist_admin(): t.rename_user('administrator','admin') elif 'admin' in t.show_userlist_admin(): print 'user_admin has been chanaged!' else: print t.show_userlist_admin() print 'Windows base setup has finished!!' #帐号列表 t = myAccount().show_user_list() output=open(log_path,"a+") output.write('[Account List]\n') for user in t: output.write('Windows Account is %s\n' %user) output.write('\n') #系统服务 t = myService().get_service_info() '''item_count = len(t) n = 0 log_server(log_path,'[Service List]\n') while True: for item in t: item_value = '<' +str(item['pid'])+ '> <' + item['stat']+ '> <' + item['displayname']+ '> <' + item['name'] + '> <' + item['startmode']+ '>'+'\n' log_server(log_path,item_value) n += 1 if n > item_count: break break log_server(log_path,'\n')''' output=open(log_path,"a+") output.write('\n') output.write('[Server List]\n') for item in t: output.write('%-35s %-60s %-5s %-8s %-10s \n' %(item['name'],item['displayname'],item['pid'],item['stat'],item['startmode'])) output.write('\n') #系统启动项列表 t = show_startupcommand() output=open(log_path,"a+") output.write('\n') output.write('[Startup_List]\n') for item in t:# output.write('%-18s %-20s %-s \n' %(item['Name'],item['Command'],item['Location'])) output.write('%-20s %-s \n' %(item['Name'],item['Command'])) output.write('\n') '''n = 0 item_count = len(t) log_server(log_path,'[Start up]\n') while True: for item in t: item_value = '<' + item + '>' + '\n' log_server(log_path,item_value) n += 1 if n > item_count: break break log_server(log_path,'\n')''' #共享模块 t = myShare().show_share() output=open(log_path,"a+") output.write('[Share Information]\n') for user in t: output.write('Share item is %s\n' %user) output.write('\n') #系统信息检查 t = myOs().get_os_info() output=open(log_path,"a+") output.write('\n') output.write('[OS Information]\n') for m in t.keys(): output.write("%-20s: %-s\n" %(m,t[m])) output.write('\n') ''' log_server(log_path,'[OS Information]\n') item_value = '<' + str(t['fullname'])+ '> <' + str(t['version'])+ '> <' + str(t['lastboottime']) + '>' + '\n' log_server(log_path,item_value) log_server(log_path,'\n')''' #Windows 更新补丁检查 myOs().update_information() #/*********Windows安全检查***************/ #克隆帐号检查 t = chk_clone_account() if chk_clone_account(): Item_value = 'Account has been clone!\n' log_server(log_path,'[Clone Account Check]\n') log_server(log_path,Item_value) log_server(log_path,'\n') else: Item_value = 'Account has not clone!\n' log_server(log_path,'[Clone Account Check]\n') log_server(log_path,Item_value) log_server(log_path,'\n') #系统服务设置 output=open(log_path,"a+") toclose=[] blacklist_path = sys.path[0]+'/data/svr_blacklist.txt' f=open(blacklist_path) svr_blacklist = f.readlines() f.close() s=myService() svr_stat=s.get_service_info() #print svr_blacklist #print svr_stat for b in svr_blacklist: b=b.strip() for svr in svr_stat: if svr["name"] == b and svr["startmode"] != "Disabled": toclose.append(b) #output.write('*'*50+'\r\n') output.write('[Service check]\r\n') #output.write('*'*50+'\r\n') for s in toclose: output.write("%s should be disabled\r\n" % s) #磁盘信息 myOs().get_diskinfo() #磁盘分区信息 myOs().get_partitioninfo() #网卡信息 myOs().get_networkadapter() #系统进程列表 t = myProcess().get_process_info() output=open(log_path,"a+") output.write('\n') output.write('[System processlist]\r\n') for x in t: if x[2] != None: output.write('%-22s %-5s %-20s %-s\n' %(x[1],x[0],datetime.datetime.strptime(str(str(x[2]).split('.')[0]),'%Y%m%d%H%M%S'),x[3])) output.write('\n') #系统服务设置 #toclose=[] blacklist_path = sys.path[0]+'/data/svr_blacklist.txt' f=open(blacklist_path) svr_blacklist = f.readlines() f.close() for b in svr_blacklist: b = b.strip() myService().change_mode(b,'Disabled') print 'Windows check has finished!!' sys.exit
python利用WMI等监控获取windows状态如CPU、内存、硬盘等信息相关推荐
- java获取windows系统信息(CPU,内存,文件系统,硬盘大小)
Java怎么获取windows系统信息,如CPU,内存,文件系统,硬盘大小? java实现这些功能的确有点麻烦,没有C语言方便.java在windows这方还是弱了一点.不过麻烦是麻烦点,针对这些功能 ...
- golang 获取cpu 内存 硬盘 使用率 信息 进程信息
目录 1.获取 cpu 内存 磁盘使用率 2.获取本机信息 3. 获取CPU信息 4. 获取内存信息 5.获取磁盘信息 6.获取网络信息 7. 获取进程信息 使用库: go get github.co ...
- Python利用PyQt5制作一个获取网络实时数据NBA数据播报GUI
现在NBA联赛也进行到半决赛了,我们怎么样才能以更快的方法获取NBA的数据呢?这里我们就自己来做一个数据播报的程序 文章目录 制作NBA数据爬虫 捋顺思路 编写代码 NBAReporter.py NB ...
- 利用kali暴力破解获取windows账号密码
利用kali暴力破解获取windows账号密码 步骤一:打开图形化软件hydra-gk 步骤二:设置目标系统地址 步骤三:选择用户名和密码 步骤四:设置任务编号和超时时间 步骤五:检查配置,然后选择s ...
- 通过 WMI 从 Linux 获取 Windows 信息/尝试运行程序
有一个工具可以通过 WMI 从 Linux 获取 Windows 信息,所以我试了一下. 如果这个和ZABBIX能很好的连接起来,看来可以实现真正的无代理(不是通过SNMP). 安装方法如下 1 2 ...
- Windows 性能监视器的基本指标说明(CPU,内存,硬盘参数)
作为一个系统工程师来说,要看懂监控的数据至关重要,关系着优化和分析出现的问题.我是在运维过程中要用到的.因此,今天给出Windows 性能监视器的一些基本指标(CPU,内存,硬盘参数),希望对大家将来 ...
- 树莓派-4-温度CPU内存硬盘状态信息
获取树莓派当前状态和数据(温度.CPU.内存.硬盘) 1 CPU和操作系统信息 1.1 CPU信息 $ sudo cat /proc/cpuinfo $ sudo cat /proc/cpuinfo ...
- python利用 WMI 库操作windows
转载自 http://python.jobbole.com/86349/ 最近在网上搜索Python和WMI相关资料时,发现大部分文章都千篇一律,并且基本上只说了很基础的使用,并未深入说明如何使用WM ...
- python怎么用拼音-Python利用拼音库PyPinyin获取汉字的拼音
我们可以利用python的PyPinyin库来获取汉字的拼音,我们先来写一个简单的案例import pypinyin print(pypinyin.pinyin( "小宁博客")) ...
- 快速获取Windows系统上的国家和地区信息
Windows系统上包含了200多个国家和地区的数据,有时候编程需要这些资料.以下代码可以帮助你快速获取这些信息. 将Console语句注释掉,可以更快的完成分析. 1 static void Mai ...
最新文章
- Java 线程池详解
- JavaScript——jQuery AJAX链式编程(流式编程)DEMO
- 1CCTableView的使用,TableView响应和小格子tableView实现
- word域变成正常文本_超级干货|最全的PPT、Excel、Word实用宝典,助你办公效率翻倍!...
- 1215B. The Number of Products
- MySQL视图的应用
- python多行语句_python多行语句
- python中多维数组的计算_计算python中多维数组中数组的出现次数
- android item复用,RecyclerView item正确的复用方式
- 二极管(一):反向恢复时间
- SpringBoot中Async异步方法和定时任务介绍
- 如何用excel做正交分析_excel表格分析正交数据-如何应用EXCEL表进行正交试验分析...
- WinForm界面开发教程:DevExpress WidgetView使用介绍
- HTML前端数据管理,前端数据管理
- UDS诊断系列之一 汽车诊断简介
- 关闭appleid双重认证_如何查看并移除登陆过Apple ID的设备
- 单模光纤最大传输距离为多少_单模光纤传输距离是多少?
- 网页磁贴模板_文本磁贴(登录)模板 (HTML)
- sudo: no valid sudoers sources found, quitting问题解决方案
- c语言自定义输出小数点位数_c语言double类型默认输出小数几位
热门文章
- Android NFC应用小木公交
- 森林老是显示连接服务器超时,乌鸦森林之谜3:卡赫拉之影无法连接服务器是什么原因...
- 目前最新android处理器排行榜,2017年最新安卓处理器排行榜 骁龙竟然输给了他
- iLife '09测评
- 基于Pytorch构建一个可训练的BNN
- ISCC2017 Misc write up附件题目文件
- java中write方法作用_JAVA中的懒人神器—方法(有返回值)
- sin35 在C语言中怎么表示,sin35度等于多少
- [游戏]求生之路超级专家难度模式
- 计算机右键括号内的字母,电脑操作中菜单后面括号里的字母的介绍