add flags in dnseval output and update docs (close #13)
This commit is contained in:
parent
895c80b5bf
commit
1d373df954
23
README.md
23
README.md
@ -106,18 +106,17 @@ Using `--expert` will instruct dnstraceroute to print expert hints (such as warn
|
||||
dnseval is a bulk ping utility that sends an arbitrary DNS query to a give list
|
||||
of DNS servers. This script is meant for comparing response time of multiple
|
||||
DNS servers at once:
|
||||
```
|
||||
% ./dnseval.py wikipedia.org
|
||||
server avg(ms) min(ms) max(ms) stddev(ms) lost(%)
|
||||
--------------------------------------------------------------------------
|
||||
4.2.2.1 151.067 131.270 221.742 28.643 %10
|
||||
4.2.2.2 142.175 132.921 178.133 13.348 %0
|
||||
64.6.64.6 133.047 109.145 162.938 20.609 %0
|
||||
64.6.65.6 377.270 97.669 661.471 172.717 %0
|
||||
8.8.4.4 389.048 294.581 511.134 67.953 %0
|
||||
8.8.8.8 0.000 0.000 0.000 0.000 %100
|
||||
208.67.222.222 179.068 135.975 258.582 50.681 %0
|
||||
208.67.220.220 137.817 135.822 140.113 1.504 %0
|
||||
```% ./dnseval.py -f public-v4.txt -c3 ripe.net
|
||||
server avg(ms) min(ms) max(ms) stddev(ms) lost(%) flags
|
||||
----------------------------------------------------------------------------------
|
||||
8.8.8.8 210.225 109.864 407.420 170.785 %0 QR RD RA
|
||||
8.8.4.4 107.850 93.134 120.578 13.830 %0 QR RD RA
|
||||
ns.ripe.net 118.911 114.874 123.389 4.275 %0 QR AA RD
|
||||
4.2.2.1 104.380 102.449 106.588 2.083 %0 QR RD RA
|
||||
4.2.2.2 131.056 99.143 193.711 54.264 %0 QR RD RA
|
||||
4.2.2.3 98.956 97.463 100.310 1.429 %0 QR RD RA
|
||||
4.2.2.4 223.173 97.418 463.728 208.398 %0 QR RD RA
|
||||
4.2.2.5 104.290 97.264 117.878 11.770 %0 QR RD RA
|
||||
```
|
||||
|
||||
### Author
|
||||
|
15
dnseval.py
15
dnseval.py
@ -36,6 +36,7 @@ from statistics import stdev
|
||||
|
||||
import dns.rdatatype
|
||||
import dns.resolver
|
||||
import dns.flags
|
||||
|
||||
__VERSION__ = 1.0
|
||||
__PROGNAME__ = os.path.basename(sys.argv[0])
|
||||
@ -75,6 +76,7 @@ def dnsping(host, server, dnsrecord, timeout, count):
|
||||
resolver.timeout = timeout
|
||||
resolver.lifetime = timeout
|
||||
resolver.retry_servfail = 0
|
||||
flags = ""
|
||||
|
||||
response_time = []
|
||||
i = 0
|
||||
@ -93,6 +95,7 @@ def dnsping(host, server, dnsrecord, timeout, count):
|
||||
else:
|
||||
elapsed = (etime - stime) * 1000 # convert to milliseconds
|
||||
response_time.append(elapsed)
|
||||
flags = dns.flags.to_text(answers.response.flags)
|
||||
|
||||
r_sent = i + 1
|
||||
r_received = len(response_time)
|
||||
@ -112,7 +115,7 @@ def dnsping(host, server, dnsrecord, timeout, count):
|
||||
r_avg = 0
|
||||
r_stddev = 0
|
||||
|
||||
return (server, r_avg, r_min, r_max, r_stddev, r_lost_percent)
|
||||
return (server, r_avg, r_min, r_max, r_stddev, r_lost_percent, flags)
|
||||
|
||||
|
||||
def main():
|
||||
@ -172,8 +175,8 @@ def main():
|
||||
f = [name.strip() for name in f]
|
||||
width = maxlen(f)
|
||||
blanks = (width - 5) * ' '
|
||||
print('server ', blanks, ' avg(ms) min(ms) max(ms) stddev(ms) lost(%)')
|
||||
print((60 + width) * '-')
|
||||
print('server ', blanks, ' avg(ms) min(ms) max(ms) stddev(ms) lost(%) flags')
|
||||
print((70 + width) * '-')
|
||||
for server in f:
|
||||
# check if we have a valid dns server address
|
||||
try:
|
||||
@ -189,12 +192,12 @@ def main():
|
||||
|
||||
if not s:
|
||||
continue
|
||||
(s, r_avg, r_min, r_max, r_stddev, r_lost_percent) = dnsping(hostname, s, dnsrecord, waittime,
|
||||
(s, r_avg, r_min, r_max, r_stddev, r_lost_percent, flags) = dnsping(hostname, s, dnsrecord, waittime,
|
||||
count)
|
||||
|
||||
s = server.ljust(width + 1)
|
||||
print("%s %-8.3f %-8.3f %-8.3f %-8.3f %%%d" % (
|
||||
s, r_avg, r_min, r_max, r_stddev, r_lost_percent), flush=True)
|
||||
print("%s %-8.3f %-8.3f %-8.3f %-8.3f %%%d %13s" % (
|
||||
s, r_avg, r_min, r_max, r_stddev, r_lost_percent, flags), flush=True)
|
||||
|
||||
except Exception as e:
|
||||
print('error: %s' % e)
|
||||
|
Loading…
x
Reference in New Issue
Block a user