diff options
-rw-r--r-- | dnscheck_nsd.py | 13 |
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]) |