有什么类似的东西nslookup
或dig
提供基于名称中包含的内容进行搜索的能力...比如通配符搜索或类似的东西?
我正在尝试为我们的帮助台团队编写一个带有 GUI 包装器的小脚本。理想情况下,我希望他们能够搜索用户的姓氏(DNS 记录中始终存在的内容),然后我将填充一个下拉列表,其中包含可供选择的选项。
我无法找到一种方法来有效地实现nslookup *miller*
...那么回到
Name: sf-jacobmiller.localdomain.com
Address: 10.10.10.121
Name: sf-justinmiller.localdomain.com
Address: 10.10.10.144
..然后我可以将其解析为下拉菜单以供他们选择。
我还没有研究过哪些软件ldapsearch
可以满足我的需求。我唯一的要求是它内置在 OSX 中,我不需要安装任何其他东西,否则我愿意接受您提供的任何解决方案。谢谢
答案1
您可以通过区域传输获取区域中的完整条目列表;您需要允许 DNS 服务器中的授权系统执行此功能。
完成后,您可以运行传输并 grep 结果:
dig axfr localdomain.com | grep -i miller
答案2
名称服务器在设计上不会让您搜索区域或查询它对哪些区域具有权威性。除了减少攻击媒介的明显原因(如果您不知道主机的名称,则无法向其发出 HTTP/1.1 请求)之外,还有一个非常好的理由:区域本身可以包含通配符,因此请求此类区域中的每个主机就像除以零一样。
如果您操作要搜索其记录的名称服务器,则可以执行区域传输到本地名称服务器并直接搜索记录。您仍然需要以任何格式传输文本记录,因为本地名称服务器不会做出任何不同的响应。
答案3
您只能询问 DNS 服务器是否有特定记录。因此,不会有这样的 DNS 工具。
编辑
如果可用的话,Zonetransfer 当然是可能的。
答案4
我同意已检查的答案,我认为对于无权进行区域传输的人来说,for 循环可能是一种替代方法。如果您知道 IP 范围:
name="mthebeau"
net="123.45.67."
for ip in $( seq 1 255 ); do {
sleep 1; # be kind to the server, unauthorized user
text="$( nslookup $net$ip 2>&1 | grep "$name" )";
if [ -z "$text" ]; then continue; fi;
echo "$text";
}; done
我查找这个答案是因为我想向我不知道其 IP 和机器名称的本地用户开放我的桌面。