def executeWmiQuery(client, OSHVResult, nodeOsh=None): ''' @deprecated: Use NTCMD_HR_Dis_Disk_Lib.discoverDiskByWmic instead ''' containerOsh = nodeOsh or modeling.createHostOSH(client.getIpAddress()) NTCMD_HR_Dis_Disk_Lib.discoverDiskByWmic(client, OSHVResult, containerOsh) NTCMD_HR_Dis_Disk_Lib.discoverPhysicalDiskByWmi(client, OSHVResult, containerOsh)
def disWinOS(hostOsh, shell): resultVector = ObjectStateHolderVector() if not NTCMD_HR_Dis_Disk_Lib.discoverDiskByWmic(shell, resultVector, hostOsh): NTCMD_HR_Dis_Disk_Lib.discoverDisk(shell, resultVector, hostOsh) NTCMD_HR_Dis_Disk_Lib.discoverPhysicalDiskByWmi(shell, resultVector, hostOsh) return resultVector
def DiscoveryMain(Framework): OSHVResult = ObjectStateHolderVector() client = None try: client = createWmiClient(Framework) if client: protocol = Framework.getDestinationAttribute('Protocol') hostId = Framework.getDestinationAttribute('hostId') hostOsh = modeling.createOshByCmdbIdString('nt', hostId) _, warning = discover_or_warn('fibre channel HBAs', discover_fc_hbas, Framework, hostOsh, protocol, OSHVResult, protocol_name=protocol) if warning: logger.reportWarningObject(warning) discoverUsers = Boolean.parseBoolean(Framework.getParameter('discoverUsers')) if discoverUsers: try: wmi_dis_user_lib.executeWmiQuery(client, Framework, OSHVResult, hostOsh) except: errobj = errorobject.createError(errorcodes.FAILED_DISCOVERING_RESOURCE_WITH_CLIENT_TYPE, ['users', 'wmi'], 'Failed to discover users by wmi') logger.reportErrorObject(errobj) logger.errorException('Failed to discover users by wmi') discoverShares = Boolean.parseBoolean(Framework.getParameter('discoverShares')) if discoverShares: try: wmi_dis_share_lib.executeWmiQuery(client, OSHVResult, hostOsh) except: errobj = errorobject.createError(errorcodes.FAILED_DISCOVERING_RESOURCE_WITH_CLIENT_TYPE, ['shares', 'wmi'], 'Failed to discover shares by wmi') logger.reportErrorObject(errobj) logger.errorException('Failed to discover shares by wmi') discoverProcesses = Boolean.parseBoolean(Framework.getParameter('discoverProcesses')) processes = [] try: processDiscoverer = process_discoverer.getDiscovererByWmi(client) processes = processDiscoverer.discoverAllProcesses() if not processes: raise ValueError() except: errobj = errorobject.createError(errorcodes.FAILED_DISCOVERING_RESOURCE_WITH_CLIENT_TYPE, ['processes', 'wmi'], 'Failed to discover processes by wmi') logger.reportErrorObject(errobj) logger.errorException('Failed to discover processes by wmi') if processes: # save processes to DB process_discoverer.saveProcessesToProbeDb(processes, hostId, Framework) # report processes if discoverProcesses: processReporter = process.Reporter() for processObject in processes: processesVector = processReporter.reportProcess(hostOsh, processObject) OSHVResult.addAll(processesVector) discoverMemory = Boolean.parseBoolean(Framework.getParameter('discoverMemory')) if discoverMemory: try: wmi_dis_memory_lib.executeWmiQuery(client, OSHVResult, hostOsh) except: errobj = errorobject.createError(errorcodes.FAILED_DISCOVERING_RESOURCE_WITH_CLIENT_TYPE, ['memory', 'wmi'], 'Failed to discover memory by wmi') logger.reportErrorObject(errobj) logger.errorException('Failed to discover memory by wmi') discoverDisks = Boolean.parseBoolean(Framework.getParameter('discoverDisks')) if discoverDisks: try: containerOsh = hostOsh or modeling.createHostOSH(client.getIpAddress()) NTCMD_HR_Dis_Disk_Lib.discoverDiskByWmic(client, OSHVResult, containerOsh) NTCMD_HR_Dis_Disk_Lib.discoverPhysicalDiskByWmi(client, OSHVResult, containerOsh) except: errobj = errorobject.createError(errorcodes.FAILED_DISCOVERING_RESOURCE_WITH_CLIENT_TYPE, ['disks', 'wmi'], 'Failed to discover disks by wmi') logger.reportErrorObject(errobj) logger.errorException('Failed to discover disks by wmi') discoverDrivers = Boolean.parseBoolean(Framework.getParameter('discoverDrivers')) if discoverDrivers: try: containerOsh = hostOsh or modeling.createHostOSH(client.getIpAddress()) HR_Dis_Driver_Lib.discoverDriverByWmi(client, OSHVResult, containerOsh) except: errobj = errorobject.createError(errorcodes.FAILED_DISCOVERING_RESOURCE_WITH_CLIENT_TYPE, ['drivers', 'wmi'], 'Failed to discover drivers by wmi') logger.reportErrorObject(errobj) logger.errorException('Failed to discover drivers by wmi') discoveriSCSIInfo = Boolean.parseBoolean(Framework.getParameter('discoveriSCSIInfo')) if discoveriSCSIInfo: try: NTCMD_HR_Dis_Disk_Lib.discoveriSCSIInfo(client,OSHVResult, containerOsh) except: logger.warn('Failed to connect with namespace Root\Microsoft\Windows\Storage') discoverCPUs = Boolean.parseBoolean(Framework.getParameter('discoverCPUs')) if discoverCPUs: try: wmi_dis_cpu_lib.executeWmiQuery(client, OSHVResult, hostOsh) except: errobj = errorobject.createError(errorcodes.FAILED_DISCOVERING_RESOURCE_WITH_CLIENT_TYPE, ['cpus', 'wmi'], 'Failed to discover cpus by wmi') logger.reportErrorObject(errobj) logger.errorException('Failed to discover cpus by wmi') discoverServices = Boolean.parseBoolean(Framework.getParameter('discoverServices')) servicesByCmd = Hashtable() if discoverServices: try: servOSHV = wmi_dis_service_lib.executeWmiQuery(client, OSHVResult, servicesByCmd, hostOsh) OSHVResult.addAll(servOSHV) except: errobj = errorobject.createError(errorcodes.FAILED_DISCOVERING_RESOURCE_WITH_CLIENT_TYPE, ['services', 'wmi'], 'Failed to discover services by wmi') logger.reportErrorObject(errobj) logger.errorException('Failed to discover services by wmi') #NOTE: software discovery had to be the last in discovery chain discoverSoftware = Boolean.parseBoolean(Framework.getParameter('discoverInstalledSoftware')) softNameToInstSoftOSH = {} if discoverSoftware: (softNameToInstSoftOSH, client) = __discoverInstalledSoftware(Framework, OSHVResult, client) if not client: logger.warn("Application Signature will not be run since the client is not initialized") if client: appSign = applications.createApplicationSignature(Framework, client) if processes: appSign.setProcessesManager(applications.ProcessesManager(processes, [])) servicesInfo = applications.ServicesInfo(servicesByCmd) appSign.setServicesInfo(servicesInfo) softwareInfo = applications.InstalledSoftwareInfo(None, softNameToInstSoftOSH) appSign.setInstalledSoftwareInfo(softwareInfo) appSign.getApplicationsTopology(hostId) finally: if client != None: client.close() return OSHVResult
def DiscoveryMain(Framework): OSHVResult = ObjectStateHolderVector() client = None try: client = createWmiClient(Framework) if client: protocol = Framework.getDestinationAttribute('Protocol') hostId = Framework.getDestinationAttribute('hostId') hostOsh = modeling.createOshByCmdbIdString('nt', hostId) _, warning = discover_or_warn('fibre channel HBAs', discover_fc_hbas, Framework, hostOsh, protocol, OSHVResult, protocol_name=protocol) if warning: logger.reportWarningObject(warning) discoverUsers = Boolean.parseBoolean( Framework.getParameter('discoverUsers')) if discoverUsers: try: wmi_dis_user_lib.executeWmiQuery(client, Framework, OSHVResult, hostOsh) except: errobj = errorobject.createError( errorcodes. FAILED_DISCOVERING_RESOURCE_WITH_CLIENT_TYPE, ['users', 'wmi'], 'Failed to discover users by wmi') logger.reportErrorObject(errobj) logger.errorException('Failed to discover users by wmi') discoverShares = Boolean.parseBoolean( Framework.getParameter('discoverShares')) if discoverShares: try: wmi_dis_share_lib.executeWmiQuery(client, OSHVResult, hostOsh) except: errobj = errorobject.createError( errorcodes. FAILED_DISCOVERING_RESOURCE_WITH_CLIENT_TYPE, ['shares', 'wmi'], 'Failed to discover shares by wmi') logger.reportErrorObject(errobj) logger.errorException('Failed to discover shares by wmi') discoverProcesses = Boolean.parseBoolean( Framework.getParameter('discoverProcesses')) processes = [] try: processDiscoverer = process_discoverer.getDiscovererByWmi( client) processes = processDiscoverer.discoverAllProcesses() if not processes: raise ValueError() except: errobj = errorobject.createError( errorcodes.FAILED_DISCOVERING_RESOURCE_WITH_CLIENT_TYPE, ['processes', 'wmi'], 'Failed to discover processes by wmi') logger.reportErrorObject(errobj) logger.errorException('Failed to discover processes by wmi') if processes: # save processes to DB process_discoverer.saveProcessesToProbeDb( processes, hostId, Framework) # report processes if discoverProcesses: processReporter = process.Reporter() for processObject in processes: processesVector = processReporter.reportProcess( hostOsh, processObject) OSHVResult.addAll(processesVector) discoverMemory = Boolean.parseBoolean( Framework.getParameter('discoverMemory')) if discoverMemory: try: wmi_dis_memory_lib.executeWmiQuery(client, OSHVResult, hostOsh) except: errobj = errorobject.createError( errorcodes. FAILED_DISCOVERING_RESOURCE_WITH_CLIENT_TYPE, ['memory', 'wmi'], 'Failed to discover memory by wmi') logger.reportErrorObject(errobj) logger.errorException('Failed to discover memory by wmi') discoverDisks = Boolean.parseBoolean( Framework.getParameter('discoverDisks')) if discoverDisks: try: containerOsh = hostOsh or modeling.createHostOSH( client.getIpAddress()) NTCMD_HR_Dis_Disk_Lib.discoverDiskByWmic( client, OSHVResult, containerOsh) NTCMD_HR_Dis_Disk_Lib.discoverPhysicalDiskByWmi( client, OSHVResult, containerOsh) except: errobj = errorobject.createError( errorcodes. FAILED_DISCOVERING_RESOURCE_WITH_CLIENT_TYPE, ['disks', 'wmi'], 'Failed to discover disks by wmi') logger.reportErrorObject(errobj) logger.errorException('Failed to discover disks by wmi') discoverDrivers = Boolean.parseBoolean( Framework.getParameter('discoverDrivers')) if discoverDrivers: try: containerOsh = hostOsh or modeling.createHostOSH( client.getIpAddress()) HR_Dis_Driver_Lib.discoverDriverByWmi( client, OSHVResult, containerOsh) except: errobj = errorobject.createError( errorcodes. FAILED_DISCOVERING_RESOURCE_WITH_CLIENT_TYPE, ['drivers', 'wmi'], 'Failed to discover drivers by wmi') logger.reportErrorObject(errobj) logger.errorException('Failed to discover drivers by wmi') discoveriSCSIInfo = Boolean.parseBoolean( Framework.getParameter('discoveriSCSIInfo')) if discoveriSCSIInfo: try: NTCMD_HR_Dis_Disk_Lib.discoveriSCSIInfo( client, OSHVResult, containerOsh) except: logger.warn( 'Failed to connect with namespace Root\Microsoft\Windows\Storage' ) discoverCPUs = Boolean.parseBoolean( Framework.getParameter('discoverCPUs')) if discoverCPUs: try: wmi_dis_cpu_lib.executeWmiQuery(client, OSHVResult, hostOsh) except: errobj = errorobject.createError( errorcodes. FAILED_DISCOVERING_RESOURCE_WITH_CLIENT_TYPE, ['cpus', 'wmi'], 'Failed to discover cpus by wmi') logger.reportErrorObject(errobj) logger.errorException('Failed to discover cpus by wmi') discoverServices = Boolean.parseBoolean( Framework.getParameter('discoverServices')) servicesByCmd = Hashtable() if discoverServices: try: servOSHV = wmi_dis_service_lib.executeWmiQuery( client, OSHVResult, servicesByCmd, hostOsh) OSHVResult.addAll(servOSHV) except: errobj = errorobject.createError( errorcodes. FAILED_DISCOVERING_RESOURCE_WITH_CLIENT_TYPE, ['services', 'wmi'], 'Failed to discover services by wmi') logger.reportErrorObject(errobj) logger.errorException('Failed to discover services by wmi') #NOTE: software discovery had to be the last in discovery chain discoverSoftware = Boolean.parseBoolean( Framework.getParameter('discoverInstalledSoftware')) softNameToInstSoftOSH = {} if discoverSoftware: (softNameToInstSoftOSH, client) = __discoverInstalledSoftware(Framework, OSHVResult, client) if not client: logger.warn( "Application Signature will not be run since the client is not initialized" ) if client: appSign = applications.createApplicationSignature( Framework, client) if processes: appSign.setProcessesManager( applications.ProcessesManager(processes, [])) servicesInfo = applications.ServicesInfo(servicesByCmd) appSign.setServicesInfo(servicesInfo) softwareInfo = applications.InstalledSoftwareInfo( None, softNameToInstSoftOSH) appSign.setInstalledSoftwareInfo(softwareInfo) appSign.getApplicationsTopology(hostId) finally: if client != None: client.close() return OSHVResult
def disWinOSiSCSIInfo(hostOsh, shell): resultVector = ObjectStateHolderVector() NTCMD_HR_Dis_Disk_Lib.discoveriSCSIInfo(shell, resultVector, hostOsh) return resultVector