使用BATCH(cmd)获取DNS解析时间

时间:2016-01-12 12:32:03

标签: windows batch-file time cmd dns

我正在尝试获取DNS服务器的解析时间,但我不确定我做得好。

首先,我尝试对我的DNS服务器IP进行ping操作,并捕获时间值,但我不确定它是否是正确的值,因为我认为此值是发出请求并获取的时间对此IP的回应。

然后我尝试制作两个不同的ping,一个像这样:"ping www.google.es",第二个像:"ping googleIP"并比较时间,但时间完全相同。

最后,我尝试搜索一个给我这个信息但却找不到它的命令。我尝试了nslookup,但这不是我需要的答案。是否有任何命令或任何方式来获取此信息?

谢谢。 :)

2 个答案:

答案 0 :(得分:5)

更新: C.J. Jackson正确地指出,在衡量DNS解析时间时,您必须考虑缓存。我认为在回答并关注测量命令运行时方面时,这将是一个给定的。但可以肯定的是,您需要ipconfig /flushdns清除运行之间的本地DNS缓存,以真正衡量您的DNS服务器性能。

nslookup对DNS服务器执行名称解析 - 因此这是正确的命令。但正如您已经指出的那样,它不会显示名称解析所需的时间。使用Windows'可以做到这一点。拥有powershell

powershell "Measure-Command { nslookup www.google.es }"

现在,这个输出在我的系统上......

Non-authoritative answer:


Days              : 0
Hours             : 0
Minutes           : 0
Seconds           : 0
Milliseconds      : 31
Ticks             : 317898
TotalDays         : 3,679375E-07
TotalHours        : 8,8305E-06
TotalMinutes      : 0,00052983
TotalSeconds      : 0,0317898
TotalMilliseconds : 31,7898

如果您想以编程方式使用此值,请使用FINDSTR进行过滤:

powershell "Measure-Command { nslookup www.google.es }" | FINDSTR "^Milliseconds"

不幸的是,这仍然会输出Non-authoritative answer: nslookup打印到STDERR。与批量相比,您无法重定向到NUL中的powershell - 而是需要重定向到$null

powershell "Measure-Command { nslookup www.google.es 2> $null }" | FINDSTR "^Milliseconds"

输出:

Milliseconds      : 31

或者,正如Stephan所指出的,您还可以将重定向移到powershell调用之外,从而超出时间测量(在我的结束时相差约2ms)。这有效,因为powershell输出到STDOUT而不是STDERR

powershell "Measure-Command { nslookup www.google.es }" 2>NUL | FINDSTR "^Milliseconds"

答案 1 :(得分:0)