Fix handling invalid TTL and some output string justifications (fix #26, #27)

This commit is contained in:
Babak Farrokhi 2016-08-22 15:58:58 +04:30
parent 93b0d6ec51
commit 50934cbe91
Signed by: farrokhi
GPG Key ID: 6B267AD85D632E9A

View File

@ -25,9 +25,10 @@
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
import os
import getopt import getopt
import ipaddress import ipaddress
import os
import signal import signal
import socket import socket
import sys import sys
@ -167,6 +168,7 @@ def dnsping(host, server, dnsrecord, timeout, count, use_tcp=False, use_edns=Fal
if answers is not None: if answers is not None:
flags = answers.response.flags flags = answers.response.flags
if answers.rrset is not None:
ttl = answers.rrset.ttl ttl = answers.rrset.ttl
return server, r_avg, r_min, r_max, r_stddev, r_lost_percent, flags, ttl return server, r_avg, r_min, r_max, r_stddev, r_lost_percent, flags, ttl
@ -237,7 +239,7 @@ def main():
width = maxlen(f) width = maxlen(f)
blanks = (width - 5) * ' ' blanks = (width - 5) * ' '
print('server ', blanks, ' avg(ms) min(ms) max(ms) stddev(ms) lost(%) ttl flags') print('server ', blanks, ' avg(ms) min(ms) max(ms) stddev(ms) lost(%) ttl flags')
print((90 + width) * '-') print((93 + 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
if server.lstrip() == '': # deal with empty lines if server.lstrip() == '': # deal with empty lines
@ -260,11 +262,12 @@ def main():
continue continue
try: try:
(s, r_avg, r_min, r_max, r_stddev, r_lost_percent, flags, ttl) = dnsping(hostname, s, dnsrecord, waittime, (s, r_avg, r_min, r_max, r_stddev, r_lost_percent, flags, ttl) = dnsping(hostname, s, dnsrecord,
waittime,
count, use_tcp=use_tcp, count, use_tcp=use_tcp,
use_edns=use_edns) use_edns=use_edns)
except dns.resolver.NXDOMAIN: except dns.resolver.NXDOMAIN:
print('%s: NXDOMAIN' % (server)) print('%-15s NXDOMAIN' % (server))
continue continue
except Exception as e: except Exception as e:
print('%s: %s' % (server, e)) print('%s: %s' % (server, e))
@ -272,8 +275,13 @@ def main():
s = server.ljust(width + 1) s = server.ljust(width + 1)
text_flags = flags_to_text(flags) text_flags = flags_to_text(flags)
print("%s %-8.3f %-8.3f %-8.3f %-8.3f %%%-3d %-5.0f %21s" % (
s, r_avg, r_min, r_max, r_stddev, r_lost_percent, ttl, text_flags), flush=True) s_ttl = str(ttl)
if s_ttl == "None":
s_ttl = "N/A"
print("%s %-8.3f %-8.3f %-8.3f %-8.3f %%%-3d %-8s %21s" % (
s, r_avg, r_min, r_max, r_stddev, r_lost_percent, s_ttl, text_flags), flush=True)
except Exception as e: except Exception as e:
print('%s' % (server, e)) print('%s' % (server, e))