File: //usr/lib/python2.7/site-packages/lap/check_routes_birdc.py
from subprocess import Popen, PIPE
import yaml
import re
import types
def __run__(params):
try:
thresholds = yaml.load(params.get('thresholds'))
response = Popen(['sudo /usr/lib/check_mk_agent/need_sudo/birdc route'], shell=True, stdout=PIPE, stderr=PIPE, close_fds=True)
infos, errors = response.communicate()
regexp = re.compile(r"^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/\d{2}")
result = []
for line in infos.split('\n'):
r = regexp.search(line)
if not isinstance(r, types.NoneType):
result.append(r.group(0))
thresholds.update({'qtde': len(result), 'limit': (thresholds['total'] - (len(result)))})
except Exception, e:
return [2, "CRITICAL - Error: %s" % repr(e)]
if errors:
return [2, 'CRITICAL - %s' % repr(errors)]
if thresholds['limit'] >= thresholds['critical']:
return [2, 'CRITICAL: The firewall has %(qtde)s of %(total)s rules' % thresholds]
elif thresholds['limit'] >= thresholds['warning']:
return [1, 'WARNING: The firewall has %(qtde)s of %(total)s rules' % thresholds]
else:
return [0, 'OK - The firewall rules is ok: %(qtde)s rules' % thresholds]