add flags in dnseval output and update docs (close #13)
This commit is contained in:
		
							
								
								
									
										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) | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user