For work, I need to do a lot of DNS lookups. I would normally run the dig
command. But it would be quicker if I could get all in one glance in terminal. So, I created a python script to do DNS lookups. I created it do to the main records I normally look up for a website, A, MX, mail A, NS and TXT records. This is built using the dnspython library.
import sys
import socket
import dns.resolver
print 'Argument List:', str(sys.argv)
site = sys.argv[1]
try:
print (site + " A record lookup: ")
for rdata in dns.resolver.query(site, 'A') :
print rdata
except:
print "Query failed"
try:
print ("\n" + site + " MX record lookup: ")
for rdata1 in dns.resolver.query(site, 'MX') :
print rdata1
except:
print "Query failed"
try:
print ("\nmail." + site + " record lookup: ")
for rdata2 in dns.resolver.query('mail.'+site, 'A') :
print rdata2
except:
print "Query failed"
try:
print ("\n" + site + " NS record lookup: ")
for rdata3 in dns.resolver.query(site, 'NS') :
print rdata3
except:
print "Query failed"
try:
print ("\n" + site + " TXT record lookup: ")
for rdata4 in dns.resolver.query(site, 'TXT') :
print rdata4
except:
print "Query failed"
To run the script: pythong dns.py google.com
The last part you would replace google.com with the domain that needed a DNS lookup.
Example output:
google.com A record lookup:
172.217.20.110
google.com MX record lookup:
50 alt4.aspmx.l.google.com.
40 alt3.aspmx.l.google.com.
30 alt2.aspmx.l.google.com.
10 aspmx.l.google.com.
20 alt1.aspmx.l.google.com.
mail.google.com record lookup:
172.217.20.101
google.com NS record lookup:
ns4.google.com.
ns1.google.com.
ns2.google.com.
ns3.google.com.
google.com TXT record lookup:
"v=spf1 include:_spf.google.com ~all"
"docusign=05958488-4752-4ef2-95eb-aa7ba8a3bd0e"
"facebook-domain-verification=22rm551cu4k0ab0bxsw536tlds4h95"