Ale*_*lex 12 domain-name-system bash
的行为dig +short
是在运行不返回任何答案的查询时不返回任何内容(空)(与超时无关,只是一个明确的空答案)。
单独运行查询是可以的,但是结合一个-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
显示答案。
输出如下所示:
$ dig +noall +question +answer google.com serverfault.com
;google.com. IN A
google.com. 284 IN A 74.125.137.101
google.com. 284 IN A 74.125.137.138
google.com. 284 IN A 74.125.137.102
google.com. 284 IN A 74.125.137.100
google.com. 284 IN A 74.125.137.113
google.com. 284 IN A 74.125.137.139
;serverfault.com. IN A
serverfault.com. 187 IN A 198.252.206.16
Run Code Online (Sandbox Code Playgroud)
如果您没有得到回复,您将看到两个相邻的问题。您不会知道为什么查询失败,因为此输出不显示 RCODE(也没有+short
),但输出足以分析大量数据集并定位需要更详细分析的记录。
如果您发现自己正在对 DNS 引用进行批量分析,请切换+answer
到+authority
.