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