NSlookup и linux Dig

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

На Linux я могу перечислить все записи в таблице DNS, заканчивающиеся на “80”, используя:

dig axfr my.domain | grep 80

Как я могу сделать это с помощью NSlookup на Windows? Я пробовал запустить NSlookup и ввести

ls my.domain

Что дает мне полный список. Но как отфильтровать результат, как с помощью grep на Linux?

Я пробовал:

C:\Users\user>nslookup -ls my.domain | find "80"
*** Некорректный параметр: ls

но это вызывает указанную ошибку.

Я считаю более элегантным решением использовать PowerShell. Это определенно лучше, чем использовать Cygwin на машине с Windows – по крайней мере, это встроенное решение.

В Bash мы пишем:

dig axfr my.domain | grep "80"

Эквивалент в PowerShell будет:

nslookup -ls my.domain | where {$_ -match "80"}

Или еще лучше использовать регулярные выражения, чтобы убедиться, что соответствуют только строки, заканчивающиеся на 80:

nslookup -ls my.domain | where {$_ -match "(80)$"}

Дополнительно, если вы заинтересованы в трансферах доменной зоны, вам может быть полезен этот ответ (и вот проект на GitHub).

Я думаю, что вам нужен find команд.

nslookup -ls my.domain | find "80"

Имейте в виду, что ни grep 80, ни find "80" не вернут только те записи, которые заканчиваются на 80. Оба они вернут записи, которые содержат 80. Если вы действительно хотите только записи, которые заканчиваются на 80, лучше использовать findstr с флагом /e (сопоставляет шаблон, если он в конце строки) и добавив начальную точку (в противном случае вы можете получить что-то вроде 10.21.37.180).

nslookup -ls my.domain | findstr /e ".80"

Вы также можете использовать Cygwin, который является “большой коллекцией инструментов GNU и Open Source, которые обеспечивают функциональность, аналогичную дистрибутиву Linux на Windows.”

ПРАВКА

Если nslookup -ls my.domain выдает вам ошибку, попробуйте

 echo ls my.domain | nslookup | find "80"

или если вы действительно хотите только те, что заканчиваются на .80, попробуйте

 echo ls my.domain | nslookup | findstr /e ".80"

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

Как фильтровать результаты обработки DNS с помощью nslookup на Windows

Введение

Работа с DNS (Системой доменных имен) является ключевой частью управления сетями, а инструмент nslookup на платформе Windows позволяет получать и анализировать информацию о доменных именах. В данном ответе мы рассмотрим, как получить записи DNS, использующие фильтрацию, аналогичную команде grep в Linux.

Проблема

Необходимость в фильтрации записей DNS может возникнуть в различных сценариях, например, когда у вас есть множество записей и нужно быстро найти конкретные. В вашей ситуации вы пытались использовать команду ls в nslookup, но столкнулись с проблемами. Вы хотите получить список записей, оканчивающихся на "80", аналогично следующей команде в Linux:

dig axfr my.domain | grep "80"

Решение

Для выполнения аналогичной задачи в Windows с использованием nslookup, выполните следующие шаги:

  1. Использование команды nslookup

    Выполните команду, чтобы получить все записи для домена:

    nslookup -ls my.domain

    Однако это может привести к возвращению большого объема данных, и теперь нам нужно отфильтровать их для поиска нужной информации.

  2. Фильтрация результатов с помощью findstr

    Оптимальным способом фильтрации результатов в Windows будет использование команды findstr. Чтобы получить записи, заканчивающиеся на "80", выполните следующую команду:

    echo ls my.domain | nslookup | findstr /e ".80"

    Здесь /e — это параметр findstr, который позволяет искать строки, оканчивающиеся на указанный текст (в данном случае ".80"). Это гарантирует, что вы получите только те записи, которые заканчиваются на нужное значение.

  3. Поток команд для фильтрации

    Команды, которые вы пытаетесь использовать, могут быть вызовом самого nslookup для получения записей с использованием перенаправления ввода, как показано выше. Это позволяет вам обойти ограничения на прямые команды ls, которые могут вызывать ошибки в nslookup.

Альтернативы и лучшие практики

Для более сложного фильтра или возможностей анализа данных, одним из лучших альтернативных решений будет использование PowerShell. Вы можете выполнить следующую команду:

nslookup -ls my.domain | Where-Object {$_ -match "(80)$"}

Этот метод эффективнее, так как позволяет использовать регулярные выражения для фильтрации, обеспечивая более точный результат.

Заключение

В этом ответе вы узнали, как осуществить фильтрацию записей DNS на Windows, используя nslookup и findstr. Умение эффективно работать с инструментами DNS поможет вам более точно и быстро справляться с вашими задачами в области сетевого администрирования. Не забывайте, что для получения более детализированной информации вы всегда можете обратиться к документации по nslookup и PowerShell, что позволит вам углубить свои знания и улучшить навыки администрирования.

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

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