Nslookup с использованием альтернативы сервера в Python

Ищу замену 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 для nslookup

Насколько мне известно, socket.getaddrinfo() не позволяет маршрутизировать запрос через сервер. Мне нужно знать, «что этот сервер думает о моем имени хоста». Не "каково мое локальное имя хоста".

Возможный дубликат модуль python для nslookup

Aurora Wang 20.11.2018 21:21

Не дубликат. Как я сказал в OP, socket.getaddrinfo не позволяет вам указывать сервер, а это функциональность, которая мне нужна.

Daniel Paczuski Bak 20.11.2018 21:27

Вы ищете dnspython?

Maurice Meyer 20.11.2018 21:45

Возможный дубликат Установите конкретный DNS-сервер с помощью dns.resolver (pythondns)

wesinat0r 14.05.2019 22:28
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
4
913
1

Ответы 1

Вам необходимо создать объект преобразователя и настроить преобразователи на 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.

Возможно, вам потребуется установить dnspython.

Другие вопросы по теме