dnsutils устарел, ldns имеет команду drill, но нет короткой опции.

Вопрос или проблема

Команда dig устарела. Я использую drill из ldns. У drill, похоже, нет короткого варианта для отображения только IP. Кто-нибудь знает, как сделать так, чтобы он показывал только IP и не выводил другой текст?

Чуть поздно к вечеринке, но похоже, что drill ~сейчас~ имеет флаг -Q (“тихий”), который делает то же самое, что и +short для dig:

$ drill -Q superuser.com
104.18.8.56
104.18.9.56

ОБНОВЛЕНИЕ: Похоже, что эта функция присутствует в ldns с по крайней мере, с версии 1.0.0. Вы, вероятно, просто пропустили это в своем исследовании, потому что drill не нацелен на 100% замену dig?


Предыдущий Ответ

Что немного удивительно, так это то, что эта функция была зафиксирована в 2005 году, но не была выпущена до ноября 2021 года.

Я не уверен, что вызвало задержку (и другие коммиты) на 16 лет, но, по крайней мере, у вас теперь есть нативное решение drill!

dig с +short выглядит так:

$ dig +short example.com
XXX.XX.XX.XXX

Таким образом, вы можете просто сделать:

$ drill example.com | awk '{if(NF > 0 && substr($1,1,1) != ";" && $0 !~ /SOA/) print $NF }'
XXX.XX.XX.XXX

Понимание моего awk

if (NF > 0)  # Если строка не пустая
if (substr($1,1,1) != ";") # Если первый символ не `;`
if ($0 !~ /SOA/) # Если строка не содержит SOA
print $NF # Печатаем последний столбец.

Нашел способ сделать это с помощью curl и cloudflare

curl -fSs https://1.1.1.1/cdn-cgi/trace | awk -F= '/ip/ { print $2 }'

Ответ или решение

Дорогие коллеги,

В последнее время мы наблюдаем значительные изменения в используемых инструментах для работы с DNS-запросами. В частности, команда dig, которая долгое время служила стандартом в этой области, была объявлена устаревшей. Взамен ей предлагается использовать утилиту drill, входящую в пакет ldns. Однако многие пользователи столкнулись с проблемой — drill не имеет короткой опции для получения только IP-адреса, аналогичной +short в dig.

Решение проблемы

К счастью, решение уже существует! В версии ldns 1.0.0 была добавлена флаг -Q (quiet), который позволяет сократить вывод команды до минимального. Теперь вы можете использовать drill следующим образом:

drill -Q superuser.com

Вывод этой команды будет содержать только IP-адреса:

104.18.8.56
104.18.9.56

Историческая справка

Этот флаг существует в коде ldns с 2005 года, но был доступен в выпусках только с ноября 2021 года. Причины задержки в добавлении этой функции остаются неведомыми. Теперь у вас есть возможность использовать drill как более современную альтернативу dig.

Альтернативные подходы

Если по какой-то причине у вас не получается воспользоваться флагом -Q, существуют и другие способы для извлечения только IP-адреса из вывода drill. Например, вы можете применить команду awk, которая позволяет фильтровать ненужные строки:

drill example.com | awk '{if(NF > 0 && substr($1,1,1) != ";" && $0 !~ /SOA/) print $NF}'

Этот командный фрагмент проверяет каждую строку вывода drill на наличие пустоты, отбрасывает строки, начинающиеся с точки с запятой (символа комментария в DNS), и не включает записи типа SOA.

Дополнительные инструменты

Кроме того, вы также можете использовать curl для получения IP-адреса через публичный DNS-сервер. Например, команда с использованием Cloudflare выглядела бы следующим образом:

curl -fSs https://1.1.1.1/cdn-cgi/trace | awk -F= '/ip/ { print $2 }'

Данная команда обращается к API Cloudflare и возвращает только ваш IP-адрес.

Заключение

Таким образом, с недавними обновлениями drill теперь можно эффективно использовать для извлечения IP-адресов. Надеюсь, что приведенные выше способы и решения окажутся полезными в вашей практической деятельности. Если у вас возникнут какие-либо дополнительные вопросы или потребуются более детальные пояснения — не стесняйтесь обращаться!

Оцените материал
Добавить комментарий

Капча загружается...