Есть ли в DNS python метод, который автоматически выполняет прямой или обратный поиск в зависимости от переданного значения? - PullRequest
1 голос
/ 17 апреля 2020

Мне интересно, есть ли способ передать хост, fqdn или IP-адрес в DNS Python и заставить его выполнить правильный поиск (пересылка для хостов и fqdns и обратная для ips). Кроме того, я хочу знать, какой тип адреса (host, fqdn или ip) был первоначально отправлен методу.

Заранее спасибо

1 Ответ

2 голосов
/ 17 апреля 2020

Насколько мне известно, нет ни одной функции, которая будет делать то, что вы ищете. Тем не менее, это не будет слишком сложно реализовать. Вот как я бы, вероятно, сделал это.

Сначала я бы проверил, был ли ввод 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)
...