Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#!/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)