From 6b266796783229df24f04fe0dc3f7177ed2d7c02 Mon Sep 17 00:00:00 2001 From: ayeowch Date: Sun, 27 Jan 2013 10:43:04 +0800 Subject: [PATCH] added support to run traceroute locally by specifying --country=LO --- README.md | 6 +++++- screenshot.png | Bin 0 -> 80276 bytes traceroute.py | 37 +++++++++++++++++++++++++++++++++---- 3 files changed, 38 insertions(+), 5 deletions(-) create mode 100644 screenshot.png diff --git a/README.md b/README.md index a89e46a..a26c6e4 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,8 @@ # traceroute Traceroute is a Python script that allows you to get traceroute results with associated geolocation information for each hop for a specified host from geographically distant source(s). Demo: [IP Address Lookup](https://dazzlepod.com/ip/) (under "Visual Traceroute" tab) +![Using output from traceroute.py to plot hops on Google Map](https://raw.github.com/ayeowch/traceroute/master/screenshot.png) + ## Installation Save traceroute.py into a directory with its path stored in your PYTHONPATH environment variable. @@ -27,7 +29,9 @@ You can also run the script directly by passing in the --ip_address option: -i IP_ADDRESS, --ip_address=IP_ADDRESS IP address of destination host (default: 8.8.8.8) -c COUNTRY, --country=COUNTRY - Traceroute will be initiated from this country + Traceroute will be initiated from this country; choose + 'US' for United States, 'CH' for Switzerland, 'JP' for + Japan or 'LO' for localhost to run traceroute locally (default: US) -t TMP_DIR, --tmp_dir=TMP_DIR Temporary directory to store downloaded traceroute diff --git a/screenshot.png b/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..673f6cafe8511d72f944fc34926399db23f00c75 GIT binary patch literal 80276 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 JtQ9v6{a;*k?>PVf literal 0 HcmV?d00001 diff --git a/traceroute.py b/traceroute.py index f206ad2..2299b23 100644 --- a/traceroute.py +++ b/traceroute.py @@ -8,7 +8,7 @@ for each hop for a specified host from geographically distant source(s). __author__ = 'Dazzlepod (info@dazzlepod.com)' __copyright__ = 'Copyright (c) 2013 Dazzlepod' -__version__ = '$Revision: #16 $' +__version__ = '$Revision: #18 $' import datetime import json @@ -50,6 +50,11 @@ class Traceroute(object): 'url': 'http://www.harenet.ad.jp/cgi-bin/harenet/traceroute/traceroute.cgi', 'post_data': {'host': self.ip_address}, }, + # 'LO' for localhost in which case 'url' will be used as the command to execute traceroute locally + 'LO': { + 'url': 'traceroute %s' % self.ip_address, + 'post_data': None, + }, } self.source = sources[self.country] @@ -64,7 +69,14 @@ class Traceroute(object): self.print_debug("ip_address = %s" % self.ip_address) txt = os.path.join(self.tmp_dir, '%s.%s.txt' % (self.ip_address, self.country)) if not os.path.exists(txt): - (status_code, traceroute) = self.get_traceroute_output() + if self.country == 'LO': + (status_code, traceroute) = self.execute_cmd(self.source['url']) + else: + (status_code, traceroute) = self.get_traceroute_output() + + if status_code != 0 and status_code != 200: + return {'error': status_code} + f = open(txt, 'w') f.write(traceroute) f.close() @@ -192,6 +204,23 @@ class Traceroute(object): location = tmp_location return location + def execute_cmd(self, cmd): + """Execute the specified command locally and return the resultant + return code and output.""" + stdout = '' + returncode = -1 + p = Popen(cmd, shell=True, stdin=PIPE, stdout=PIPE, stderr=PIPE) + try: + signal.signal(signal.SIGALRM, self.signal_handler) + signal.alarm(self.timeout) + stdout, stderr = p.communicate() + returncode = p.returncode + self.print_debug("cmd = %s, returncode = %d" % (cmd, returncode)) + signal.alarm(0) + except Exception, e: + self.print_debug("%s" % str(e)) + return (returncode, stdout) + def urlopen(self, url, context=None): """Perform HTTP GET/POST on the specified URL and return the resultant status code and response.""" @@ -262,9 +291,9 @@ def main(): cmdparser = optparse.OptionParser(usage, version=("traceroute " + __version__)) cmdparser.add_option("-i", "--ip_address", type="string", default="8.8.8.8", help="IP address of destination host (default: 8.8.8.8)") cmdparser.add_option("-c", "--country", type="choice", - choices=['US', 'CH', 'JP',], + choices=['US', 'CH', 'JP', 'LO',], default="US", - help="Traceroute will be initiated from this country (default: US)") + help="Traceroute will be initiated from this country; choose 'US' for United States, 'CH' for Switzerland, 'JP' for Japan or 'LO' for localhost to run traceroute locally (default: US)") cmdparser.add_option("-t", "--tmp_dir", type="string", default="/tmp", help="Temporary directory to store downloaded traceroute results (default: /tmp)") cmdparser.add_option("-n", "--no_geo", action="store_true", default=False, help="No geolocation data (default: False)") cmdparser.add_option("-s", "--timeout", type="int", default=120, help="Timeout in seconds for all downloads (default: 120)")