Created
June 3, 2017 11:41
-
-
Save meeuw/4da02290d2bd0f975a13437c04103dea to your computer and use it in GitHub Desktop.
script to query domain name on all available nameservers to check for zone transfer status
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/home/meeuw/venv/dns/bin/python | |
import dns.resolver | |
import sys | |
import tld | |
if (len(sys.argv) > 2): | |
typ = sys.argv[2] | |
else: | |
typ = 'A' | |
answers = dns.resolver.query( | |
tld.get_tld(sys.argv[1], fix_protocol=True), | |
'NS' | |
) | |
nameservers = [] | |
for rdata in answers: | |
nameservers.append(rdata.to_text()) | |
nameservers_ip = {} | |
for ns in nameservers: | |
try: | |
answers = dns.resolver.query(ns, 'A') | |
except dns.resolver.NoAnswer: | |
pass | |
for rdata in answers: | |
nameservers_ip[ns] = rdata.to_text() | |
try: | |
answers = dns.resolver.query(ns, 'AAAA') | |
except dns.resolver.NoAnswer: | |
pass | |
for rdata in answers: | |
nameservers_ip[ns] = rdata.to_text() | |
for name, ip in nameservers_ip.items(): | |
res = dns.resolver.Resolver(configure=False) | |
res.nameservers = [ip] | |
answers = res.query(sys.argv[1], typ) | |
for rdata in answers: | |
print (name, '\t', rdata) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment