Arpit
Arpit

Reputation: 13

How to pass inputs from file to dns.resolver.Resolver.query() from file in dns python?

I am writing a code to pass domain name and ip address from file to dns resolver query. But it does not seem to be working

import dns.resolver
import os
import sys

d = open(str(sys.argv[1]),'r') #contains the domain name list
ip = open(str(sys.argv[2]),'r') # contain the list of ip address as dns resolver 

domain_list = d.readlines()
ip_list = ip.readlines()
my_resolver = dns.resolver.Resolver()
output_f = open("output.txt",'a')
for nameserv in ip_list:
        my_resolver.nameservers = [nameserv]
        for domain in domain_list:
                try:
                        answer = my_resolver.query(domain)
                        entry = "server : " + "   " + nameserv + " " + "query_result " + str(answer) + '\n'
                        output_f.write(entry)
                except :
                        print domain,nameserv
                        print "no domain"


d.close()
ip.close()
output_f.close()

My ip address list contains 8.8.8.8 and 127.0.1.1 which are both valid dns resolvers. domain list contain www.facebook.com,www.urltrends.com etc Still i am getting error that no domain exists.

Upvotes: 0

Views: 1042

Answers (1)

mr nick
mr nick

Reputation: 560

readlines() also reads the trailing \n, which then gets passed to the resolver. Try this instead:

my_list = open(filename, 'r').read().splitlines()

Upvotes: 1

Related Questions