Получить все FQDN для IP-адреса в Python - PullRequest
0 голосов
/ 05 марта 2019

У меня следующая проблема: на самом деле я делаю скрипт для сервера ovirt для автоматического удаления виртуальной машины, который включает в себя отмену регистрации их в DNS. Но для некоторой очень специфической виртуальной машины существует несколько полных доменных имен для примера IP-адреса:

myfirstfqdn.com IN A 10.10.10.10
mysecondfqdn.com IN A 10.10.10.10

Я пытался сделать это с сокетом в python, но он возвращает только один ответ, я также пробовал python с dnspython, но мне не удалось. цель состоит в том, чтобы посчитать количество записей типа А на DNS-сервере У кого-нибудь есть идея делать такие вещи?

Ответы [ 2 ]

1 голос
/ 05 марта 2019

Это совершенно невозможно. Если у меня хорошее настроение, я могу добавить запись на свой DNS-сервер, указывающую на ваш IP-адрес. Как правило, вы не можете это выяснить (за исключением некоторых подсказок в некоторых протоколах, таких как http (s)).

0 голосов
/ 05 марта 2019

Учитывая файл зоны в указанном выше формате, вы можете сделать что-то вроде ...

from collections import defaultdict

zone_file = """myfirstfqdn.com IN A 10.10.10.10
mysecondfqdn.com IN A 10.10.10.10"""

# Build mapping for lookups
ip_fqdn_mapping = defaultdict(list)

for record in zone_file.split("\n"):
    fqdn, record_class, record_type, ip_address = record.split()
    ip_fqdn_mapping[ip_address].append(fqdn)

# Lookup
ip_address_to_lookup = "10.10.10.10"
fqdns = ip_fqdn_mapping[ip_address_to_lookup]

print(fqdns)

Примечание: Использование сокета может быть сделано так - Поиск имени хоста Python из IP с 1 секундойвремя ожидания

Однако для этого требуется, чтобы запрашиваемый DNS-сервер правильно настроил обратные записи PTR.

https://www.cloudns.net/wiki/article/40/

...