alexforster / nlring

NLNOG Ring task execution library

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

nlring

NLNOG Ring task execution library

Author:Alex Forster (alex@alexforster.com)
License:BSD 3-Clause

Installation

pip install nlring

Example Code

from nlring import SSH, RingNode, Ring


def do_tcp_traceroute(node, address, countries):

    countries = [c.lower() for c in countries]

    if node.country.lower() not in countries:

        return None

    with SSH(username='example', host=node.hostname) as ssh:

        ssh.authenticate()

        ssh.write('traceroute.db -4 -T -N 30 -n -w 2 -q 10 -z 0.1 {}'.format(address))
        traceroute = ssh.read(timeout=90)

        return traceroute

def success(node, result):

    if result is not None:

        print('{}\n{}\n'.format(node.hostname, result))

def error(node, ex, tb):

    import traceback
    print('{}\n{}'.format(node.hostname, ''.join(traceback.format_exception(type(ex), ex, tb))))


ring = Ring(parallelism=32)

ring.discover(cache_file='./api-nodes.json')

ring.run(do_tcp_traceroute,
         args=['google.com', ['cn', 'kr', 'th', 'kh', 'au', 'jp']],
         on_success=success,
         on_error=error)


# sabay01.ring.nlnog.net
# traceroute to google.com (175.28.1.177), 30 hops max, 60 byte packets
#  1  118.67.200.189  0.369 ms  0.343 ms  0.307 ms  0.324 ms  0.291 ms  0.299 ms  0.353 ms  0.360 ms  0.334 ms  0.379 ms
#  2  175.28.2.33  1.117 ms  1.108 ms  0.999 ms  1.230 ms  1.185 ms  1.147 ms  1.066 ms  1.281 ms  1.175 ms  1.185 ms
#  3  175.28.1.177  0.461 ms  0.459 ms  0.516 ms  0.488 ms  0.565 ms  0.537 ms  0.516 ms  0.470 ms  0.431 ms  0.499 ms
#
# apnic01.ring.nlnog.net
# traceroute to google.com (216.58.220.142), 30 hops max, 60 byte packets
#  1  203.133.248.254  0.175 ms  0.159 ms  0.186 ms  0.162 ms  0.171 ms  0.159 ms  0.163 ms  0.293 ms  0.185 ms  0.158 ms
#  2  45.127.172.73  17.411 ms  17.343 ms  17.334 ms  17.328 ms  17.366 ms  17.404 ms  17.345 ms  17.373 ms  17.330 ms  17.383 ms
#  3  216.239.40.233  17.741 ms 216.239.40.223  17.732 ms 216.239.40.233  17.742 ms 216.239.40.223  17.899 ms  17.776 ms 216.239.40.233  17.689 ms 216.239.40.223  17.726 ms 216.239.40.233  17.725 ms  17.742 ms 216.239.40.223  17.713 ms
#  4  108.170.232.179  17.800 ms  17.766 ms  17.760 ms 108.170.232.177  17.739 ms 108.170.232.179  17.790 ms 108.170.232.177  17.782 ms  17.747 ms  17.770 ms 108.170.232.179  17.746 ms  17.767 ms
#  5  216.58.220.142  17.848 ms  17.942 ms  17.933 ms  17.992 ms  17.704 ms  18.588 ms  18.001 ms  17.957 ms  17.855 ms  18.179 ms
#
# ...

About

NLNOG Ring task execution library

License:BSD 3-Clause "New" or "Revised" License


Languages

Language:Python 100.0%