Вопрос или проблема
На 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
, выполните следующие шаги:
-
Использование команды nslookup
Выполните команду, чтобы получить все записи для домена:
nslookup -ls my.domain
Однако это может привести к возвращению большого объема данных, и теперь нам нужно отфильтровать их для поиска нужной информации.
-
Фильтрация результатов с помощью findstr
Оптимальным способом фильтрации результатов в Windows будет использование команды
findstr
. Чтобы получить записи, заканчивающиеся на "80", выполните следующую команду:echo ls my.domain | nslookup | findstr /e ".80"
Здесь
/e
— это параметр findstr, который позволяет искать строки, оканчивающиеся на указанный текст (в данном случае ".80"). Это гарантирует, что вы получите только те записи, которые заканчиваются на нужное значение. -
Поток команд для фильтрации
Команды, которые вы пытаетесь использовать, могут быть вызовом самого nslookup для получения записей с использованием перенаправления ввода, как показано выше. Это позволяет вам обойти ограничения на прямые команды
ls
, которые могут вызывать ошибки в nslookup.
Альтернативы и лучшие практики
Для более сложного фильтра или возможностей анализа данных, одним из лучших альтернативных решений будет использование PowerShell. Вы можете выполнить следующую команду:
nslookup -ls my.domain | Where-Object {$_ -match "(80)$"}
Этот метод эффективнее, так как позволяет использовать регулярные выражения для фильтрации, обеспечивая более точный результат.
Заключение
В этом ответе вы узнали, как осуществить фильтрацию записей DNS на Windows, используя nslookup и findstr. Умение эффективно работать с инструментами DNS поможет вам более точно и быстро справляться с вашими задачами в области сетевого администрирования. Не забывайте, что для получения более детализированной информации вы всегда можете обратиться к документации по nslookup и PowerShell, что позволит вам углубить свои знания и улучшить навыки администрирования.