
В 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
но он выдает указанную выше ошибку.
решение1
Я считаю, что более элегантное решение — использовать 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).
решение2
Я думаю, вы ищете 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
try
echo ls my.domain | nslookup | findstr /e ".80"