NSlookup 和 linux Dig

u12*_*123 5 dig nslookup

在 linux 上,我可以使用以下命令列出 DNS 表中以“80”结尾的所有条目:

dig axfr my.domain | grep 80
Run Code Online (Sandbox Code Playgroud)

我如何在 Windows 上使用 NSlookup 做到这一点?我试过启动 NSlookup 并输入

ls my.domain
Run Code Online (Sandbox Code Playgroud)

这给了我完整的清单。但是如何像在 linux 上使用 grep 一样过滤结果集?

我试过了:

C:\Users\user>nslookup -ls my.domain | find "80"
*** Invalid option: ls
Run Code Online (Sandbox Code Playgroud)

但它给出了上述错误。

Dre*_*pin 5

我认为您正在寻找的是命令find

nslookup -ls my.domain | find "80"
Run Code Online (Sandbox Code Playgroud)

但请注意,既不返回grep 80也不会find "80"仅返回那些80. 它们都将返回包含 80. 如果您确实只想要以结尾的条目,那么最好80与标志一起使用findstr/e如果在行末尾则匹配模式)并包含前导句点(否则您可能会得到类似 10.21.37.180 的内容)。

nslookup -ls my.domain | findstr /e ".80"
Run Code Online (Sandbox Code Playgroud)

您还可以使用Cygwin,它是“GNU 和开源工具的大型集合,提供类似于 Windows 上的 Linux 发行版的功能”。

编辑

如果nslookup -ls my.domain给你一个错误,那么你可以尝试

 echo ls my.domain | nslookup | find "80"
Run Code Online (Sandbox Code Playgroud)

或者如果你真的只想要那些以.80try结尾的

 echo ls my.domain | nslookup | findstr /e ".80"
Run Code Online (Sandbox Code Playgroud)


mnm*_*mnc 5

我相信更优雅的解决方案是使用 powershell。它肯定比在 Windows 机器上使用 Cygwin 更好——一方面它是内置的。

在 Bash 中,我们写:

dig axfr my.domain | grep "80"
Run Code Online (Sandbox Code Playgroud)

Powershell 中的等效项是:

nslookup -ls my.domain | where {$_ -match "80"}
Run Code Online (Sandbox Code Playgroud)

或者甚至更好地使用正则表达式来确保只80匹配以结尾的行:

nslookup -ls my.domain | where {$_ -match "(80)$"}
Run Code Online (Sandbox Code Playgroud)

此外,如果您对域区域传输感兴趣,您可能会发现这个答案很有用(这里是一个GitHub 项目)。