#!/usr/bin/env python3 # -*- coding: utf-8 -*- # Copyright 2017, Florent Thiery ''' Checks that DNS records are provided by the customer servers ''' import subprocess import os import sys import imp GREEN = '\033[92m' RED = '\033[91m' DEF = '\033[0m' def get_dns_servers(): servers = list() with open('/etc/resolv.conf', 'r') as f: d = f.read().strip() for l in d.split('\n'): if l.startswith('nameserver '): servers.append(l.split('nameserver ')[1]) return servers resolvers = get_dns_servers() def get_result(output): for line in output.split('\n'): if "has address " in line: return line.split("has address ")[1] def check_dns(hostname): all_ok = True for resolver in resolvers: status, output = subprocess.getstatusoutput("host %s %s" % (hostname, resolver)) success = (status == 0) if success: color = GREEN address = get_result(output) else: color = RED all_ok = False address = "FAIL" print('%sDNS resolution of %s on server %s returned %s%s' % (color, hostname, resolver, address, DEF)) return all_ok if os.path.isfile('../utils.py'): all_ok = True es_utils = imp.load_source('es_utils', '../utils.py') conf = es_utils.load_conf() servers = ( 'MS_SERVER_NAME', 'MONITOR_SERVER_NAME', 'CM_SERVER_NAME', ) for s in servers: hostname = conf.get('MS_SERVER_NAME') ok = check_dns(hostname) if not ok: all_ok = False if not all_ok: sys.exit(1) else: sys.exit(0)