5

В 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"
*** Invalid option: ls

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

2 ответа2

5

Я считаю, что более элегантным решением является использование powershell. Это, безусловно, лучше, чем использовать Cygwin на компьютере с Windows - во-первых, он встроен.

В Баш мы пишем:

dig axfr my.domain | grep "80"

Эквивалентом в Powershell будет:

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

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

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

Кроме того, если вы заинтересованы в передаче доменной зоны, этот ответ может оказаться полезным (и вот вам проект GitHub).

4

Я думаю, что вы ищете, это команда 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"

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .