的行为dig +short
是在运行不返回任何答案的查询时不返回任何内容(null)(与超时无关,只是一个明确的 null 答案)。
单独运行查询时还可以,但是结合-f参数运行一批查询时,就惨了!
dig +short -f queries.txt
queries.txt:
A somedomain.com
TXT otherdomain.com
A somedomain.com
现在,如果 DNS 服务器没有为 TXT otherdomain.com 返回任何内容(即 ANSWER: 0),没有超时或其他内容,那么上述 dig 命令的输出将类似于:
dig +short -f queries.txt
1.2.3.4
1.2.3.4
即,只有两行。不适用于“粘贴”和其他类似命令。您不能再合并 query.txt 的输出和 dig 的生产输出。
在这里可以做任何优雅的事情吗?
在这种情况下,没有真正的方法可以
+short
做你想做的事。在处理批量数据时,它只是错误的工具。我遇到这个问题时找到的解决方案是使用过滤器的组合:
+noall +question +answer
.+noall
关闭所有显示字段,+question
显示带有;
注释前缀的查询,并+answer
显示答案。输出如下所示:
如果您没有得到回复,您将看到两个相邻的问题。您不会知道查询失败的原因,因为此输出不显示 RCODE(也不显示
+short
),但输出足以分析批量数据集和定位需要更详细分析的记录。如果您发现自己正在对 DNS 引用进行批量分析,请切换
+answer
到+authority
.像这样的东西很适合粘贴,因为它会为每一行输入保留一行输出,以防有 1 或 0 个响应(接受的答案没有)。它打印 IP 或原始 FQDN。如果需要,可以将其更改为在一行中打印所有已解析的 IP,但我知道在我的情况下只有一个 IP。
它将答案保存到变量中,然后检查变量是否为空(不回答,打印输入),或者不为空(打印输出)。
我认为这个 python 脚本会起作用。