我正在寻找替代nslookup的python。
其他来源将我引向了socket.getaddrinfo()。但是,这似乎不允许我指定用于解析主机名的服务器,nslookup支持并要求这样做。
C:\Users\Administrator>nslookup 10.0.11.6 coolserver
Server: coolserv.coolserver.com
Address: 10.0.1.1
Name: the-host-name-i-want.blah.com
Address: 10.0.11.6
这是一个要求,我能够通过"coolserver“进行查找。这是socket
或其他python库所能做到的吗?
我知道我可以通过子进程直接调用nslookup。
编辑:
如上所述,这不是python module for nslookup的副本
据我所知,socket.getaddrinfo()
不允许您通过服务器路由请求。我需要知道“这个服务器认为我的主机名是什么”。而不是“我的本地主机名是什么”。
发布于 2018-11-20 20:49:43
您需要创建解析程序对象,并将解析程序设置为要使用的DNS服务器:
from dns import *
resolver = resolver.Resolver()
resolver.nameservers = ['8.8.8.8']
a = resolver.query('duckduckgo.com','A')
a.rrset.items[0].address #'54.241.2.241'
要执行反向查找,请执行以下操作:
r =reversename.from_address('50.18.200.106')
ra = resolver.query(r,'PTR')
ra.rrset.items[0].to_text() # 'ec2-50-18-200-106.us-west-1.compute.amazonaws.com.'
注意:ec2-50-18-200-106.us-west-1.compute.amazonaws.com
是一种duckduckgo.com web服务器。
您可能需要安装dnspython。
https://stackoverflow.com/questions/53400642
复制相似问题