summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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])