Насколько мне известно, нет ни одной функции, которая будет делать то, что вы ищете. Тем не менее, это не будет слишком сложно реализовать. Вот как я бы, вероятно, сделал это.
Сначала я бы проверил, был ли ввод IP-адресом
import ipaddress
def is_ipaddress(string):
try:
ipaddress.ip_address(string)
return True
except ValueError:
return False
Если это IP-адрес, то я бы позвонил dns.query.reverse_query()
. Предполагается, что я установил последнюю версию разработки dns python от Github, потому что reverse_query()
был добавлен только недавно (см. https://github.com/rthalley/dnspython/commit/7c105cce64699e1a221176f98f7cb9e682aba1e0).
Если это не IP-адрес затем я подготовил бы свой запрос с помощью dns.message.make_query(name, rdtype)
и затем отправил бы его с dns.query.udp()
.
Если вы хотите использовать значение поиска в /etc/reolv.conf, вы можете подумать о создании dns.resolver.Resolver
, который в настоящее время выполняет обработку поиска по умолчанию.
import dns.resolver
import dns.rdatatype
resolver = dns.resolver.Resolver()
response = resolver.query('my-computer', dns.rdatatype.A)