DNS query against a specific server.

Ervin Hegedüs airween at gmail.com
Mon Sep 30 08:54:41 EDT 2013


Hello,

On Mon, Sep 30, 2013 at 04:42:29AM -0700, Michel Albert wrote:
> Hi,
> 
> ``socket.gethostbyname`` sends the DNS resolution query to the DNS server specified by the OS. Is there an easy way to send a query to a *different* server?
> 
> I see that twisted.names allows you to do this, but, having all of twisted as dependency to my project when all I need to do is a simple DNS query seems a bit extreme. I also found pydns, but that looks fairly outdated and unmaintained.
> 
> Is there not an actively maintained lightweight solution? If not, I will go with twisted.
> 

there is a dns modul for Python (I don't know is it part of
standard Python library or not), on most Linux distribution you
can find it, eg. in Debian it's called python-dnspython.

It can handle different nameserver, than OS knows - here is a
sample code:


import dns.resolver

r = dns.resolver.Resolver()
r.namerservers =  ['127.0.0.1']
# or any other IP, in my case I'm using PDNS, which have two
# parts: a recursor and a resolver; recursor allows requests only
# on localhost

mxservers = r.query("python.org", 'MX').response




hth,


a.

 



More information about the Python-list mailing list