Skip to content

Instantly share code, notes, and snippets.

@collina
Created November 30, 2014 22:11
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save collina/19d1d24f5a0524ea4973 to your computer and use it in GitHub Desktop.
Save collina/19d1d24f5a0524ea4973 to your computer and use it in GitHub Desktop.
M-Lab Nameserver Consistency Check
#!/usr/bin/env python
import argparse
import json
import urllib2
import random
import string
import logging
def main(args):
ns_response_totals = []
while len(ns_response_totals) <= args.iterations:
try:
ephemeral_url = "{0}?{1}".format(args.ns_url, random.randint(0,200000000))
ns_response_json = urllib2.urlopen(ephemeral_url).read()
ns_response_dict = json.loads(ns_response_json)
ns_response_site = ns_response_dict['fqdn'].split('.')[3]
ns_response_totals.append(ns_response_site)
logging.info("Received {fqdn}".format(**ns_response_dict))
except Exception as caught_error:
logging.error("Exemption {0}".format(caught_error))
logging.info("{0}\t{1}".format("Site", "Count"))
for fqdn in set(ns_response_totals):
logging.info("{0}\t{1}".format(fqdn, ns_response_totals.count(fqdn)))
if __name__ == "__main__":
parser = argparse.ArgumentParser(
formatter_class=argparse.ArgumentDefaultsHelpFormatter)
parser.add_argument('iterations', type=int, default=None)
parser.add_argument('--ns_url', default="http://mlab-ns.appspot.com/ndt")
parser.add_argument('--output', type=str, default='mlab_ns_check.log')
args = parser.parse_args()
logging.basicConfig(level=logging.INFO, filename=args.output, format='%(message)s')
main(args)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment