当没有答案时,如何让 dig +short 返回一些东西?

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 的生产输出。

这里可以做任何优雅的事情吗?

And*_*w B 5

+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.