{ "metadata": { "name": "networkx_demo" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "code", "collapsed": false, "input": [ "import networkx as nx" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 1 }, { "cell_type": "code", "collapsed": false, "input": [ "data = \"\"\"traceroute to www.vancouver.ca (199.175.219.246), 64 hops max, 52 byte packets\n", " 1 192.168.1.254 (192.168.1.254) 2.381 ms 2.554 ms 0.841 ms\n", " 2 10.31.196.1 (10.31.196.1) 27.991 ms 19.714 ms 17.100 ms\n", " 3 clgrab31gr01.bb.telus.com (154.11.10.170) 46.593 ms 44.800 ms 270.093 ms\n", " 4 154.11.2.218 (154.11.2.218) 43.418 ms 42.816 ms 43.113 ms\n", " 5 core3-calgaryqa_gi6-0-0.net.bell.ca (64.230.77.250) 61.020 ms 64.224 ms 61.376 ms\n", " 6 * * *\n", " 7 * core3-vancouverbg_pos10-1-0.net.bell.ca (64.230.77.205) 62.431 ms 62.479 ms\n", " 8 * agg1-vancouverbg_xe5-0-0.net.bell.ca (64.230.77.229) 61.626 ms 128.529 ms\n", " 9 dis4-vancouverbg_10-0-0.net.bell.ca (64.230.122.241) 132.342 ms 60.667 ms 62.148 ms\n", "10 10.1.7.2 (10.1.7.2) 61.920 ms 61.926 ms 60.517 ms\n", "11 204.101.186.34 (204.101.186.34) 61.635 ms 62.415 ms 61.575 ms\n", "12 * * *\n", "13 * * *\n", "14 * * *\n", "15 * * *\n", "16 * * *\n", "17 * * *\n", "18 * * *\n", "19 * * *\n", "20 * * *\n", "21 * * *\n", "22 * * *\n", "23 * * *\n", "24 * * *\n", "25 * * *\n", "26 * * *\n", "27 * * *\n", "28 * * *\n", "29 * * * \"\"\"\n", "data = data.split(\"\\n\")" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 2 }, { "cell_type": "code", "collapsed": false, "input": [ "data = data[1:]" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 3 }, { "cell_type": "code", "collapsed": false, "input": [ "cleaned_ip = [ \",\".join(item.split()[1:4]) for item in data if \"* * *\" not in item ]" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 4 }, { "cell_type": "code", "collapsed": false, "input": [ "import re\n", "pattern = r'[0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+'\n", "path_list = [re.findall(pattern,line)[0] for line in cleaned_ip]" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 5 }, { "cell_type": "code", "collapsed": false, "input": [ "node_node = zip(path_list,path_list[1:])\n", "node_node" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 6, "text": [ "[('192.168.1.254', '10.31.196.1'),\n", " ('10.31.196.1', '154.11.10.170'),\n", " ('154.11.10.170', '154.11.2.218'),\n", " ('154.11.2.218', '64.230.77.250'),\n", " ('64.230.77.250', '64.230.77.205'),\n", " ('64.230.77.205', '64.230.77.229'),\n", " ('64.230.77.229', '64.230.122.241'),\n", " ('64.230.122.241', '10.1.7.2'),\n", " ('10.1.7.2', '204.101.186.34')]" ] } ], "prompt_number": 6 }, { "cell_type": "code", "collapsed": false, "input": [ "trace = nx.Graph()" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 7 }, { "cell_type": "code", "collapsed": false, "input": [ "[trace.add_edge(a,b) for a,b in node_node] " ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 8, "text": [ "[None, None, None, None, None, None, None, None, None]" ] } ], "prompt_number": 8 }, { "cell_type": "code", "collapsed": false, "input": [ "trace.edges()" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 9, "text": [ "[('64.230.77.229', '64.230.122.241'),\n", " ('64.230.77.229', '64.230.77.205'),\n", " ('10.31.196.1', '154.11.10.170'),\n", " ('10.31.196.1', '192.168.1.254'),\n", " ('154.11.10.170', '154.11.2.218'),\n", " ('10.1.7.2', '64.230.122.241'),\n", " ('10.1.7.2', '204.101.186.34'),\n", " ('64.230.77.250', '154.11.2.218'),\n", " ('64.230.77.250', '64.230.77.205')]" ] } ], "prompt_number": 9 }, { "cell_type": "code", "collapsed": false, "input": [ "trace.nodes()" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 10, "text": [ "['64.230.77.229',\n", " '10.31.196.1',\n", " '154.11.10.170',\n", " '10.1.7.2',\n", " '64.230.77.250',\n", " '192.168.1.254',\n", " '154.11.2.218',\n", " '64.230.122.241',\n", " '204.101.186.34',\n", " '64.230.77.205']" ] } ], "prompt_number": 10 }, { "cell_type": "code", "collapsed": false, "input": [ "nx.draw(trace)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "display_data", "png": "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\nAABJRU5ErkJggg==\n" } ], "prompt_number": 11 } ], "metadata": {} } ] }