summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohan Lundberg <lundberg@nordu.net>2012-12-07 12:22:21 +0100
committerJohan Lundberg <lundberg@nordu.net>2012-12-07 12:22:21 +0100
commit1f1276a2544a956cf813914a6e6750d161540701 (patch)
tree81fb73c3b02ba56010581a04e256f29da6afd8ed
parent291a2436043f167679ac1340444d8b978fc40060 (diff)
Now catching NoNameservers exception.
-rw-r--r--dnscheck_nsd.py13
1 files changed, 10 insertions, 3 deletions
diff --git a/dnscheck_nsd.py b/dnscheck_nsd.py
index c5130c3..17b4362 100644
--- a/dnscheck_nsd.py
+++ b/dnscheck_nsd.py
@@ -49,10 +49,13 @@ def compare_soa(zone, resolvers):
return 'timeout'
except dns.resolver.NoAnswer:
logger.error('%s returned no answer for %s.' % (gethostbyaddr(resolver.nameservers[0])[0], zone))
- return 'timeout'
+ return None
except dns.resolver.NXDOMAIN:
logger.error('NS %s responded domain not found (NXDOMAIN) for %s.' % (gethostbyaddr(resolver.nameservers[0])[0], zone))
- return 'no match'
+ return None
+ except dns.resolver.NoNameservers:
+ logger.error('No non-broken nameservers are available to answer the query for %s.' % zone)
+ return None
if answer:
answers.append(answer)
if len(set(answers)) == 1:
@@ -73,6 +76,8 @@ def print_soa(zone, resolvers):
logger.error('%s returned no answer for %s.' % (gethostbyaddr(resolver.nameservers[0])[0], zone))
except dns.resolver.NXDOMAIN:
logger.error('NS %s responded domain not found (NXDOMAIN) for %s.' % (gethostbyaddr(resolver.nameservers[0])[0], zone))
+ except dns.resolver.NoNameservers:
+ logger.error('No non-broken nameservers are available to answer the query for %s.' % zone)
def parse_file(f):
result = []
@@ -123,8 +128,10 @@ def main():
for item in parse_file(args.file):
resolver = get_resolver(nameserver=item['ns_address'], lifetime=args.timeout)
result = compare_soa(item['domain'], [ref_resolver, resolver])
- if result == 'timeout':
+ if not result:
print 'Check for zone %s failed.\n' % item['domain']
+ if result == 'timeout':
+ print 'Check for zone %s timed out.\n' % item['domain']
if result == 'no match':
print 'SOA did not match:'
print_soa(item['domain'], [ref_resolver, resolver])