diff options
author | Johan Lundberg <lundberg@nordu.net> | 2012-12-07 12:22:21 +0100 |
---|---|---|
committer | Johan Lundberg <lundberg@nordu.net> | 2012-12-07 12:22:21 +0100 |
commit | 1f1276a2544a956cf813914a6e6750d161540701 (patch) | |
tree | 81fb73c3b02ba56010581a04e256f29da6afd8ed | |
parent | 291a2436043f167679ac1340444d8b978fc40060 (diff) |
Now catching NoNameservers exception.
-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]) |