在进行logging的批量input时,我想通过使用dig执行批量查询来validation每个logging是否放在正确的位置。 挖将吐出所有积极的结果:
dig +noall +answer
要么
dig +short
如另一个问题的答案中所指出的那样,
dig +noall +question +answer
但是,这仍然显示所有“正面”输出,使您可以通过批量输出在行的起始处连续search两个分号来标识不返回任何内容的logging。
我正在寻找的是一个命令(不必是Dig),它将只返回错误或只显示没有结果的logging,这样只显示那些logging,而不是正确inputlogging的典型输出。
许多方法来做到这一点…只是一些简单的脚本。 即使是你引用的问题中的Python响应。
多次调用DIG而不是使用批量文件一次。 这返回1行失败,2行或更多行。 基于通过/失败的回声名称。
使用您最喜欢的脚本语言的DNS查找方法,并评估返回码。 我喜欢powershell,为此,您将使用[System.Net.Dns]::GetHostByAddress("fully.qualified.domain.name")
使用批量文件调用DIG一次,并将输出(正则expression式)正则expression式。 下面的示例,再次在PowerShell中。 如果你是一个unix的人,正则expression式也在那里。 我很多年前就使用过SED,但是现在可能有更简单的方法。
Z Z
[string]$digout = dig +noall +answer +question goodname1 goodname2 badname1 goodname3 badname2 $digout = $digout -replace ("\r\n", "") $digout.split(";") | select-string -notmatch "\d\s+IN"
将返回:
badname1. IN A badname2. IN A
第一行将DIG输出以stringforms分配给var而不是数组。 这是必要的,因为正则expression式在string而不是数组上工作。 第二行删除该变种的CR / LF。 第3A部分行分裂var,以便每个问题和它的答案出现在同一行。 第3B部分过滤文本,只显示没有答案的问题。
这样的事情在脚本语言中会容易得多。 例如,在Python中,错误的查找会引发exception:
Python 3.5.1 (default, Mar 3 2016, 09:29:07) [GCC 5.3.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import socket >>> socket.gethostbyname('google.com') '216.58.216.78' >>> socket.gethostbyname('alsdkfjowiejlskdjf.com') Traceback (most recent call last): File "<stdin>", line 1, in <module> socket.gaierror: [Errno -2] Name or service not known
所以这只是一个做你所有的查找的问题,只打印出你的尝试抓住的结果。