dig short的行为是在运行不返回任何答案的查询时返回任何内容(null)(与timeout无关,只是空答案).
在单独运行查询时这是可以的,但是当与-f参数组合并运行一批查询时,这很糟糕!
挖短-f queries.txt
queries.txt:
一个somedomain.com
TXT otherdomain.com
一个somedomain.com
现在,如果dns服务器没有为TXT otherdomain.com返回任何内容(即ANSWER:0),而不是超时或其他东西,那么上面dig命令的输出将是这样的:
挖短-f queries.txt
1.2.3.4
1.2.3.4
即只有2行.不适合“粘贴”和其他类似的命令.你不能再合并queries.txt的输出和dig的输出.
有什么优雅可以在这里完成吗?
解决方法
在这种情况下,没有真正的方法可以做到你想做的事情.在处理批量数据时,这只是工作的错误工具.
遇到这个问题时我发现的解决方案是使用过滤器的组合:没有问题的答案. noall关闭所有显示字段,问题显示正在进行的查询;评论前缀,答案显示答案.
输出如下:
$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
如果您没有得到回复,您将看到两个相邻的问题.您不知道查询失败的原因,因为此输出不显示RCODE(也不显示),但输出足以分析批量数据集并查找需要更详细分析的记录.