diff --git a/checks/cisco_wlc b/checks/cisco_wlc index 320d05e61cba93dc3a9f70fbc2484cc33d92a603..df95a6c4c93ca71f56487f7113339f3e9100e918 100644 --- a/checks/cisco_wlc +++ b/checks/cisco_wlc @@ -1,17 +1,17 @@ #!/usr/bin/python # -*- encoding: utf-8; py-indent-offset: 4 -*- # -# 03.04.2016 : rewrite by Th.L. -# 24.05.2016 : added admin/operational state, fix for missing ap_name parameter -# 01.07.2016 : added long output -# 06.07.2016 : fixed: missing ap -# 05.01.2018 : cosmetic changes, added metrics/cisco_wlc.py -# 23.05.2018 : changed scan function, changed return values to yield -# code cleanup, removed unused oid's -# 26.07.2018 : added code for incomplete ap data (missing lwap, data) -# 03.08.2018 : changed cdp info: short interface name, dropped neighbor domain name, added S/N and Model to longoutput -# 14.09.2018 : fixed issue with missing AP, fixed issue with SSH check -# +# 2016-04-03: rewrite by Th.L. +# 2016-05-24: added admin/operational state, fix for missing ap_name parameter +# 2016-07-01: added long output +# 2016-07-06: fixed: missing ap +# 2018-01-05: cosmetic changes, added metrics/cisco_wlc.py +# 2018-05-23: changed scan function, changed return values to yield +# code cleanup, removed unused oid's +# 2018-07-26: added code for incomplete ap data (missing lwap, data) +# 2018-08-03: changed cdp info: short interface name, dropped neighbor domain name, added S/N and Model to longoutput +# 2018-09-14: fixed issue with missing AP, fixed issue with SSH check +# 2021-10-29: added basic suppoert for Catalyst 9800 Controllers factory_settings['cisco_wlc_defaults'] = { @@ -87,27 +87,28 @@ def parse_cisco_wlc(info): ap_assocfailcountforrssilow, ap_assocfailtimes, ap_echorequestcount, ap_echoresponselosscount = lwapapentry if lwap_oid_end == OID_END: - lwapap_info = {'ap_uptime': int(ap_uptime), - 'ap_encryptionenable': int(ap_encryptionenable), - 'ap_powerstatus': int(ap_powerstatus), - 'ap_telnetenable': int(ap_telnetenable), - 'ap_sshenable': int(ap_sshenable), - 'ap_wipsenable': int(ap_wipsenable), - 'ap_encryptionsupported': int(ap_encryptionsupported), - 'ap_dataencryptionstatus': int(ap_dataencryptionstatus), - 'ap_adminstatus': int(ap_adminstatus), - - 'ap_assoccount': int(ap_assoccount), - 'ap_associatedclientcount': int(ap_associatedclientcount), - 'ap_maxclientlimitnumbertrap': int(ap_maxclientlimitnumbertrap), - 'ap_reassocsucccount': int(ap_reassocsucccount), - 'ap_reassocfailcount': int(ap_reassocfailcount), - 'ap_activeclientcount': int(ap_activeclientcount), - 'ap_assocfailcountforrssilow': int(ap_assocfailcountforrssilow), - 'ap_assocfailtimes': int(ap_assocfailtimes), - 'ap_echorequestcount': int(ap_echorequestcount), - 'ap_echoresponselosscount': int(ap_echoresponselosscount) - } + lwapap_info = { + 'ap_uptime': int(ap_uptime), + 'ap_encryptionenable': int(ap_encryptionenable), + 'ap_powerstatus': int(ap_powerstatus), + 'ap_telnetenable': int(ap_telnetenable), + 'ap_sshenable': int(ap_sshenable), + 'ap_wipsenable': int(ap_wipsenable), + 'ap_encryptionsupported': int(ap_encryptionsupported), + 'ap_dataencryptionstatus': int(ap_dataencryptionstatus), + 'ap_adminstatus': int(ap_adminstatus), + + 'ap_assoccount': int(ap_assoccount) if ap_assoccount.isdigit() else None, + 'ap_associatedclientcount': int(ap_associatedclientcount) if ap_associatedclientcount.isdigit() else None, + 'ap_maxclientlimitnumbertrap': int(ap_maxclientlimitnumbertrap) if ap_maxclientlimitnumbertrap.isdigit() else None, + 'ap_reassocsucccount': int(ap_reassocsucccount) if ap_reassocsucccount.isdigit() else None, + 'ap_reassocfailcount': int(ap_reassocfailcount) if ap_reassocfailcount.isdigit() else None, + 'ap_activeclientcount': int(ap_activeclientcount) if ap_activeclientcount.isdigit() else None, + 'ap_assocfailcountforrssilow': int(ap_assocfailcountforrssilow) if ap_assocfailcountforrssilow.isdigit() else None, + 'ap_assocfailtimes': int(ap_assocfailtimes) if ap_assocfailtimes.isdigit() else None, + 'ap_echorequestcount': int(ap_echorequestcount) if ap_echorequestcount.isdigit() else None, + 'ap_echoresponselosscount': int(ap_echoresponselosscount) if ap_echoresponselosscount.isdigit() else None, + } return lwapap_info if len(info) != 0: @@ -205,7 +206,9 @@ def check_cisco_wlc(item, params, parsed): else: ap_uptime = 'unknown' - infotext = 'up since: %s, clients: %s' % (ap_uptime, ap.get('ap_activeclientcount', 'unknown')) + infotext = 'up since: %s' % ap_uptime + if ap.get('ap_activeclientcount'): + infotext += ', clients: %s' % ap.get('ap_activeclientcount', 'unknown') longoutput = '\nBase data:' longoutput += '\n - IP address: %s' % ap.get('ap_ipaddress') @@ -262,7 +265,7 @@ def check_cisco_wlc(item, params, parsed): if not params.get('ignore_ap_powerstatus'): yield 2, 'Not on full power' - if ap.get('cdp_neigh_duplex', 3) == 3: + if ap.get('cdp_neigh_duplex', None) == 3: longoutput += '\n - CPD duplex state is half duplex (check network connection).' if not params.get('ignore_cdp_duplex'): yield 2, 'CDP state is half duplex' @@ -336,7 +339,8 @@ check_info['cisco_wlc'] = { 'has_perfdata': True, 'default_levels_variable': 'cisco_wlc_defaults', 'parse_function': parse_cisco_wlc, - 'snmp_scan_function': lambda oid: oid('.1.3.6.1.2.1.1.1.0') == 'Cisco Controller', + 'snmp_scan_function': lambda oid: oid('.1.3.6.1.2.1.1.1.0') == 'Cisco Controller' or + oid('.1.3.6.1.2.1.1.1.0').lower().find('c9800_iosxe') != -1, 'snmp_info': [('.1.3.6.1.4.1.14179.2.2.1.1', [ # AIRESPACE-WIRELESS-MIB::bsnAPEntry OID_END, '3', # 1 bsnAPName diff --git a/cisco_wlc.mkp b/cisco_wlc.mkp index d7f14cea69fa22cf395ab74fd739333bd4647f4d..e8806f3d6c2eb8bbb247f322b4600b87e7799a6f 100644 Binary files a/cisco_wlc.mkp and b/cisco_wlc.mkp differ diff --git a/packages/cisco_wlc b/packages/cisco_wlc index fffcb654d76ae28605f36b8963e14047266cd90e..a9a5e28a0370c758d87feec6dc0465707d40a781 100644 --- a/packages/cisco_wlc +++ b/packages/cisco_wlc @@ -1,21 +1,13 @@ -{'author': 'Th.L. (thl-cmk[at]outlook[dot]com)', - 'description': 'Monitors Cisco WLC APs. \nservice checks for:\n - missing APs\n - ssh/telnet enabled\n - encryption disabled\n - not on full PoE\n - admin/operational state\nPerfdata: Clientcount, clientfail, uptime, ...', +{'author': u'Th.L. (thl-cmk[at]outlook[dot]com)', + 'description': u'Monitors Cisco WLC APs. \nservice checks for:\n - missing APs\n - ssh/telnet enabled\n - encryption disabled\n - not on full PoE\n - admin/operational state\nPerfdata: Clientcount, clientfail, uptime, ...\n\n', 'download_url': 'http://thl-cmk.hopto.org', - 'files': {'agents': [], - 'bin': [], - 'checkman': [], - 'checks': ['cisco_wlc'], - 'doc': [], - 'inventory': [], - 'lib': [], - 'notifications': [], - 'pnp-templates': [], + 'files': {'checks': ['cisco_wlc'], 'web': ['plugins/wato/cisco_wlc.py', 'plugins/metrics/cisco_wlc.py']}, 'name': 'cisco_wlc', 'num_files': 3, - 'title': 'monitor Cisco WLC APs', - 'version': '20180914.v04c', + 'title': u'monitor Cisco WLC APs', + 'version': '20211029.v04d', 'version.min_required': '1.2.8b8', - 'version.packaged': '1.4.0p38', + 'version.packaged': '1.6.0p25', 'version.usable_until': None} \ No newline at end of file