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"):
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"))
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)
print "}"
print ""
+print "#include <itl/itl.conf>"
+
for host in dom.getElementsByTagName("host"):
processHost(host)
}
}
+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",
}
}
+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",