From 6ed9d7d32f53f2346c4d04e1251628d5ed30af3f Mon Sep 17 00:00:00 2001 From: Stephen Soltesz Date: Mon, 24 Nov 2008 21:47:53 +0000 Subject: [PATCH] the external boot script for guessing the boot state of a node from the outside. --- zabbix/ext_boot_state | 54 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100755 zabbix/ext_boot_state diff --git a/zabbix/ext_boot_state b/zabbix/ext_boot_state new file mode 100755 index 0000000..d72e124 --- /dev/null +++ b/zabbix/ext_boot_state @@ -0,0 +1,54 @@ +#!/usr/bin/python + +import os +import sys +import time + +def port_status(str): + fields = str.split('/') + return fields[1] + +def get_state_from_port(host): + #nmap = os.popen("nmap -oG - -P0 -p 22,80,806 %s 2>/dev/null | tr ':' '\n' | grep -E 'tcp|Timeout'" % host, 'r') + nmap = os.popen("nmap -oG - -p 22,80,806 %s 2>/dev/null | tr ':' '\n' | grep -E 'tcp|Timeout'" % host, 'r') + line = nmap.readline() + ##### + ##### 22 80 806 + ##### 0 0 0 - down + ##### 1 0 0 - dbg + ##### 0 1 0 - unknown + ##### 1 1 0 - unknown + ##### 0 0 1 - firewall + ##### 1 0 1 - error or firewall + ##### 0 1 1 - firewall + ##### 1 1 1 - boot + ##### + ##### boot - 4 + ##### debug - 3 + ##### firewall - 2 + ##### unknown - 1 + ##### down - 0 + ##### + mapping = {'down' : 0, + 'unknown' : 1, + 'firewall' : 2, + 'debug' : 3, + 'boot' : 4, + } + #print "--%s--" % line + #print "--%s--" % type(line) + if line.strip() == "" or line.strip() == "Timeout": + return mapping["down"] + (p22, p80, p806) = line.split() + if port_status(p22) == "open" and \ + port_status(p80) == "open" and \ + port_status(p806) == "open": + return mapping["boot"] + elif port_status(p22) == "open" and port_status(p806) != "open": + return mapping["debug"] + elif port_status(p806) == "open": + return mapping["firewall"] + else: + return mapping["unknown"] + +print get_state_from_port(sys.argv[1]) -- 2.43.0