From 1f1276a2544a956cf813914a6e6750d161540701 Mon Sep 17 00:00:00 2001 From: Johan Lundberg Date: Fri, 7 Dec 2012 12:22:21 +0100 Subject: Now catching NoNameservers exception. --- dnscheck_nsd.py | 13 ++++++++++--- 1 file 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]) -- cgit v1.1