def collect(self, config): log.info('{0}:Start Collection of Services'.format(config.id)) ds0 = config.datasources[0] scheme = ds0.zWinScheme port = int(ds0.zWinRMPort) auth_type = 'kerberos' if '@' in ds0.zWinRMUser else 'basic' connectiontype = 'Keep-Alive' keytab = ds0.zWinKeyTabFilePath dcip = ds0.zWinKDC servicename = ds0.params['servicename'] WinRMQueries = [ create_enum_info('select name, state, status, displayname'\ ' from Win32_Service where name = "{0}"'.format(servicename))] conn_info = ConnectionInfo(ds0.manageIp, auth_type, ds0.zWinRMUser, ds0.zWinRMPassword, scheme, port, connectiontype, keytab, dcip) winrm = WinrmCollectClient() results = yield winrm.do_collect(conn_info, WinRMQueries) log.debug(WinRMQueries) defer.returnValue(results)
def collect(self, config): log.debug('{0}:Start Collection of Services'.format(config.id)) WinRMQueries = [ create_enum_info( 'select name, state, status, displayname from Win32_Service') ] conn_info = createConnectionInfo(config.datasources[0]) winrm = WinrmCollectClient() results = yield winrm.do_collect(conn_info, WinRMQueries) defer.returnValue(results)
def collect(self, config): ds0 = config.datasources[0] log.debug('{0}:Start WinRM connection test.'.format(config.id)) conn_info = createConnectionInfo(ds0) WinRMQueries = [ create_enum_info('select * from Win32_OperatingSystem') ] winrm = WinrmCollectClient() results = yield winrm.do_collect(conn_info, WinRMQueries) defer.returnValue(results)
def collect(self, config): log.debug('{0}:Start Collection of IIS Sites'.format(config.id)) ds0 = config.datasources[0] conn_info = createConnectionInfo(ds0) wql_iis6 = 'select ServerAutoStart from IIsWebServerSetting where name="{0}"'.format( ds0.params['statusname']) wql_iis7 = 'select ServerAutoStart from Site where name="{0}"'.format( ds0.params['statusname']) iis_version = ds0.params['iis_version'] if not iis_version: winrs = IISCommander(conn_info) version = yield winrs.get_iis_version() # version should be in 'Version x.x' format # 7 and above use the same namespace/query try: iis_version = re.match('Version (\d).*', version.stdout[0]).group(1) except (IndexError, AttributeError): if version.stdout: log.error("Malformed version information: {}".format( version.stdout[0])) if version.stderr: log.error("Error retrieving IIS Version: {}".format( version.stderr[0])) defer.returnValue(None) if iis_version == 6: WinRMQueries = [ create_enum_info(wql=wql_iis6, resource_uri=resource_uri_iis6) ] else: WinRMQueries = [ create_enum_info(wql=wql_iis7, resource_uri=resource_uri_iis7) ] winrm = WinrmCollectClient() results = yield winrm.do_collect(conn_info, WinRMQueries) log.debug(WinRMQueries) defer.returnValue(results)
def collect(self, config): log.info('{0}:Start Collection of Services'.format(config.id)) ds0 = config.datasources[0] servicename = ds0.params['servicename'] WinRMQueries = [ create_enum_info( 'select name, state, status, displayname' ' from Win32_Service where name = "{0}"'.format(servicename)) ] conn_info = createConnectionInfo(ds0) winrm = WinrmCollectClient() results = yield winrm.do_collect(conn_info, WinRMQueries) log.debug(WinRMQueries) defer.returnValue(results)
def collect(self, config): log.debug('{0}:Start Collection of IIS Sites'.format(config.id)) ds0 = config.datasources[0] wql_iis6 = 'select ServerAutoStart from IIsWebServerSetting where name="{0}"'.format( ds0.params['statusname']) wql_iis7 = 'select ServerAutoStart from Site where name="{0}"'.format( ds0.params['statusname']) WinRMQueries = [ create_enum_info(wql=wql_iis6, resource_uri=resource_uri_iis6), create_enum_info(wql=wql_iis7, resource_uri=resource_uri_iis7), ] conn_info = createConnectionInfo(ds0) winrm = WinrmCollectClient() results = yield winrm.do_collect(conn_info, WinRMQueries) log.debug(WinRMQueries) defer.returnValue(results)
def collect(self, config): log.debug('{0}:Start Collection of IIS Sites'.format(config.id)) ds0 = config.datasources[0] scheme = ds0.zWinScheme port = int(ds0.zWinRMPort) auth_type = 'kerberos' if '@' in ds0.zWinRMUser else 'basic' connectiontype = 'Keep-Alive' keytab = ds0.zWinKeyTabFilePath dcip = ds0.zWinKDC wql = 'select ServerAutoStart from IIsWebServerSetting where name="{0}"'.format( ds0.params['statusname']) WinRMQueries = [create_enum_info(wql=wql, resource_uri=resource_uri)] conn_info = ConnectionInfo(ds0.manageIp, auth_type, ds0.zWinRMUser, ds0.zWinRMPassword, scheme, port, connectiontype, keytab, dcip) winrm = WinrmCollectClient() results = yield winrm.do_collect(conn_info, WinRMQueries) log.debug(WinRMQueries) defer.returnValue(results)
class IIS(WinRMPlugin): compname = 'os' relname = 'winrmiis' modname = 'ZenPacks.zenoss.Microsoft.Windows.WinIIS' winrm = WinrmCollectClient() uri = 'http://schemas.microsoft.com/wbem/wsman/1/wmi/root/webadministration/*' queries = { 'IIsWebServerSetting': { 'query': "SELECT * FROM IIsWebServerSetting", 'namespace': 'microsoftiisv2', }, 'IIsWebVirtualDirSetting': { 'query': "SELECT * FROM IIsWebVirtualDirSetting", 'namespace': 'microsoftiisv2', }, 'IIs7Site': { 'query': "SELECT Name, Id, ServerAutoStart FROM Site", 'namespace': 'WebAdministration', }, } @defer.inlineCallbacks def run_query(self, conn_info, wql, log): wql = create_enum_info(wql=wql, resource_uri=self.uri) result = yield self.winrm.do_collect(conn_info, [wql]) defer.returnValue(result) @defer.inlineCallbacks def collect(self, device, log): orig = WinRMPlugin() orig.queries = self.queries conn_info = self.conn_info(device) output = yield orig.collect(device, log) for iisSite in output.get('IIs7Site', ()): name = iisSite.Name query = 'ASSOCIATORS OF {Site.Name="%s"} WHERE ResultClass=Application' % name result = yield self.run_query(conn_info, query, log) try: apps = result.values()[0][0] pool = apps.ApplicationPool except IndexError: pool = 'Unknown' iisSite.ApplicationPool = pool defer.returnValue(output) @save def process(self, device, results, log): log.info("Modeler %s processing data for device %s", self.name(), device.id) rm = self.relMap() if results.get('IIsWebServerSetting'): for iisSite in results.get('IIsWebServerSetting', ()): om = self.objectMap() om.id = self.prepId(iisSite.Name) om.statusname = iisSite.Name om.title = iisSite.ServerComment om.iis_version = 6 om.sitename = iisSite.ServerComment # Default Web Site if iisSite.ServerAutoStart == 'false': om.status = 'Stopped' else: om.status = 'Running' for iisVirt in results.get('IIsWebVirtualDirSetting', ()): if (iisVirt.Name == iisSite.Name + "/ROOT") or (iisVirt.Name == iisSite.Name + "/root"): om.apppool = iisVirt.AppPoolId rm.append(om) else: for iisSite in results.get('IIs7Site', ()): try: om = self.objectMap() om.id = self.prepId(iisSite.Id) om.title = om.statusname = om.sitename = iisSite.Name om.iis_version = 7 if iisSite.ServerAutoStart == 'false': om.status = 'Stopped' else: om.status = 'Running' om.apppool = iisSite.ApplicationPool rm.append(om) except AttributeError: pass return rm