Python DNS Lookup

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"
Python 

comments powered by Disqus