|
@@ -0,0 +1,46 @@
|
|
|
|
+#!/usr/bin/env python3
|
|
|
|
+
|
|
|
|
+# -*- encoding: utf-8; py-indent-offset: 4 -*-
|
|
|
|
+
|
|
|
|
+# License: GNU General Public License v2
|
|
|
|
+
|
|
|
|
+from typing import Dict
|
|
|
|
+from cmk.agent_based.v2 import (
|
|
|
|
+ AgentSection,
|
|
|
|
+ CheckPlugin,
|
|
|
|
+ CheckResult,
|
|
|
|
+ DiscoveryResult,
|
|
|
|
+ Result,
|
|
|
|
+ Service,
|
|
|
|
+ State,
|
|
|
|
+)
|
|
|
|
+
|
|
|
|
+monitor_data= Dict[str, object]
|
|
|
|
+
|
|
|
|
+def parse_ldap_data(string_table):
|
|
|
|
+ """parse one lines of data to dictionary"""
|
|
|
|
+ parsed = {}
|
|
|
|
+ for line in string_table:
|
|
|
|
+ item = line[0]
|
|
|
|
+ parsed.setdefault(item, {})
|
|
|
|
+ for _count, data in enumerate(line[1:]):
|
|
|
|
+ key, value = data.split("=")
|
|
|
|
+ parsed[item].setdefault(key, value)
|
|
|
|
+ return parsed
|
|
|
|
+
|
|
|
|
+def discover_edirectory_items(section) -> DiscoveryResult:
|
|
|
|
+ '''discover one item per key'''
|
|
|
|
+ for key, data in section.items():
|
|
|
|
+ yield Service(item=key)
|
|
|
|
+
|
|
|
|
+agent_section_edirectory_monitor = AgentSection(
|
|
|
|
+ name="edirectory_monitor",
|
|
|
|
+ parse_function=parse_ldap_data,
|
|
|
|
+ )
|
|
|
|
+
|
|
|
|
+check_plugin_edirectory_monitor = CheckPlugin(
|
|
|
|
+ name="edirectory_monitor",
|
|
|
|
+ service_name="%s",
|
|
|
|
+ discovery_function=discover_edirectory_items,
|
|
|
|
+ check_function=discover_edirectory_items,
|
|
|
|
+)
|