DNS query against a specific server.

Michel Albert exhuma at gmail.com
Mon Sep 30 08:45:34 EDT 2013


On Monday, 30 September 2013 14:36:34 UTC+2, William Ray Wing  wrote:
> On Sep 30, 2013, at 7:42 AM, 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.
> 
> > 
> 
> > 
> 
> > Cheers,
> 
> > Mich.
> 
> > -- 
> 
> > https://mail.python.org/mailman/listinfo/python-list
> 
> 
> 
> It isn't pure python, but you would be pretty much guaranteed a maintained solution if you use the name server lookup in your OS.  Something like:
> 
> 
> 
> 	import subprocess
> 
> 	nsl_reslt = subprocess.Popen(['nslookup', '<insert name nere>' ],stderr = subprocess.PIPE, stdout = subprocess.PIPE).communicate()[0]
> 
> 
> 
> 
> 
> Hope this helps,
> 
> Bill

Hmm... I had this option in mind, but opening a subprocess for something as small as this seemed a bit error-prone. If something on the system changes, nslookup replaced by dig or nslookup output changes for example your application will bug out.

Granted, the chance of this happening is slim, but using a fixed-version dependency in your setup script gives you a much safer solution IMO.

I know I may be splitting hairs. Any of the mentioned solutions are fine. But I am curious to see if something like this is not yet implemented in a more standard way. I was surprised to see that ``gethostbyname`` does not take an optional parameter for this task.



More information about the Python-list mailing list