在 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)
但它给出了上述错误。
我认为您正在寻找的是命令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)
或者如果你真的只想要那些以.80
try结尾的
echo ls my.domain | nslookup | findstr /e ".80"
Run Code Online (Sandbox Code Playgroud)
我相信更优雅的解决方案是使用 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 项目)。
归档时间: |
|
查看次数: |
3742 次 |
最近记录: |