]> granicus.if.org Git - icinga2/commitdiff
Updated auto-discovery script and added some more service templates.
authorGunnar Beutner <gunnar.beutner@netways.de>
Fri, 8 Mar 2013 13:41:19 +0000 (14:41 +0100)
committerGunnar Beutner <gunnar.beutner@netways.de>
Fri, 8 Mar 2013 13:42:48 +0000 (14:42 +0100)
contrib/discover.py
itl/service-common.conf

index 8133431bdb581b6ab34278215193f24f99bd90e9..a41d264c1fce61fed4cb0cbc8f25fbd74eda4a02 100755 (executable)
@@ -4,16 +4,16 @@ import subprocess
 import socket
 from xml.dom.minidom import parseString
 
-if len(sys.argv) < 2:
-    print "Syntax: %s <host>" % (sys.argv[0])
-    sys.exit(1)
+service_templates = {
+  'ssh': 'ssh',
+  'http': 'http_ip',
+  'https': 'https_ip',
+  'smtp': 'smtp',
+  'ssmtp': 'ssmtp'
+}
 
-proc = subprocess.Popen(["nmap", "-oX", "-", sys.argv[1]], stdout=subprocess.PIPE)
-output = proc.communicate()
-
-dom = parseString(output[0])
-
-hostname = sys.argv[1]
+# Expects XML output from 'nmap -oX'
+dom = parseString(sys.stdin.read())
 
 def processHost(host):
     for element in host.getElementsByTagName("status"):
@@ -32,12 +32,10 @@ def processHost(host):
     for element in host.getElementsByTagName("hostname"):
         hostname = element.getAttribute("name")
 
-    print "object host \"%s\" {" % (hostname)
+    print "object Host \"%s\" inherits \"itl-host\" {" % (hostname)
     print "\tmacros = {"
     print "\t\taddress = \"%s\"" % (address)
     print "\t},"
-    print ""
-    print "\tservices += { \"ping\" },"
 
     for element in host.getElementsByTagName("port"):
         port = int(element.getAttribute("portid"))
@@ -48,9 +46,14 @@ def processHost(host):
         except:
             serv = str(port)
 
+        try:
+            template = service_templates[serv]
+        except:
+            template = protocol
+
         print ""
         print "\tservices[\"%s\"] = {" % (serv)
-        print "\t\tservice = \"%s\"," % (protocol)
+        print "\t\ttemplates = { \"%s\" }," % (template)
         print ""
         print "\t\tmacros = {"
         print "\t\t\tport = %s" % (port)
@@ -60,5 +63,7 @@ def processHost(host):
     print "}"
     print ""
 
+print "#include <itl/itl.conf>"
+
 for host in dom.getElementsByTagName("host"):
     processHost(host)
index 1baa94df8a09d8d0ca933aa012d9061262b6abeb..e1fc5eef5acf2b01304a615fd50e9cae71547f62 100644 (file)
@@ -76,6 +76,22 @@ template Service "dummy" inherits "plugin-service" {
        }
 }
 
+template Service "tcp" inherits "plugin-service" {
+       check_command = {
+               "$plugindir$/check_tcp",
+               "-H", "$address$",
+               "-p", "$port$"
+       }
+}
+
+template Service "udp" inherits "plugin-service" {
+       check_command = {
+               "$plugindir$/check_udp",
+               "-H", "$address$",
+               "-p", "$port$"
+       }
+}
+
 template Service "http_vhost" inherits "plugin-service" {
        check_command = {
                "$plugindir$/check_http",
@@ -90,6 +106,46 @@ template Service "http_ip" inherits "plugin-service" {
        }
 }
 
+template Service "https_vhost" inherits "plugin-service" {
+       check_command = {
+               "$plugindir$/check_http",
+               "-H", "$vhost", "-S"
+       },
+}
+
+template Service "https_ip" inherits "plugin-service" {
+       check_command = {
+               "$plugindir$/check_http",
+               "-I", "$address$", "-S"
+       },
+}
+
+template Service "smtp" inherits "plugin-service" {
+       check_command = {
+               "$plugindir$/check_smtp",
+               "-H", "$address$"
+       }
+}
+
+template Service "ssmtp" inherits "plugin-service" {
+       check_command = {
+               "$plugindir$/check_ssmtp",
+               "-H", "$address$",
+               "-p", "$port$"
+       },
+
+       macros += {
+               port = 465
+       }
+}
+
+template Service "ntp_time" inherits "plugin-service" {
+       check_command = {
+               "$plugindir$/check_ntp_time",
+               "-H", "$address$"
+       }
+}
+
 template Service "ssh" inherits "plugin-service" {
        check_command = {
                "$plugindir$/check_ssh",