From e38d671a67c77d87a9139fa00f5ca5def270e1dd Mon Sep 17 00:00:00 2001
From: bmzsombi <bmzsombi@sch.bme.hu>
Date: Wed, 25 Oct 2023 22:10:05 +0200
Subject: [PATCH] read works

---
 networkxtest.py              | 65 +++++++++++++++++++++++++-----------
 router1/router1_locales.txt  |  1 -
 router1/router1_masks.txt    |  1 -
 router1/router1_name.txt     |  1 -
 router1/router1_routes.txt   | 23 ++++++++-----
 router2/router2_locales.txt  |  1 -
 router2/router2_masks.txt    |  1 -
 router2/router2_name.txt     |  1 -
 router2/router2_routes.txt   | 22 +++++++-----
 router3/router3_locales.txt  |  1 -
 router3/router3_masks.txt    |  1 -
 router3/router3_name.txt     |  1 -
 router3/router3_routes.txt   | 21 +++++++-----
 router4/router4_hostname.txt |  1 +
 router4/router4_routes.txt   | 18 ++++++++++
 router5/router5_hostname.txt |  1 +
 router5/router5_routes.txt   | 15 +++++++++
 17 files changed, 122 insertions(+), 53 deletions(-)
 delete mode 100644 router1/router1_locales.txt
 delete mode 100644 router1/router1_masks.txt
 delete mode 100644 router1/router1_name.txt
 delete mode 100644 router2/router2_locales.txt
 delete mode 100644 router2/router2_masks.txt
 delete mode 100644 router2/router2_name.txt
 delete mode 100644 router3/router3_locales.txt
 delete mode 100644 router3/router3_masks.txt
 delete mode 100644 router3/router3_name.txt
 create mode 100644 router4/router4_hostname.txt
 create mode 100644 router4/router4_routes.txt
 create mode 100644 router5/router5_hostname.txt
 create mode 100644 router5/router5_routes.txt

diff --git a/networkxtest.py b/networkxtest.py
index c5dce59..ed859ec 100644
--- a/networkxtest.py
+++ b/networkxtest.py
@@ -3,26 +3,30 @@ import matplotlib.pyplot as plt
 import os as os
 
 
-class Hosts:
+class Host:
     ips = list()
     masks = list()
+    networks = list()
 
-    def _init__(self, name, ips, masks):
-        self.name = name
+    def __init__(self):
+        self.name = ""
         self.ips = []
         self.masks = []
+        self.networks = []
 
 G = nx.Graph()
 
-routersNumber = 3
+routersNumber = 5
 
 hosts = []
+newitem = Host()
 
 for x in range(1, routersNumber + 1):
-    newitem = Hosts()
+    newitem = Host()            #reconstruct new item to empty item
     os.system('echo "$(cat ~/onlab/router' + str(x) + '/router' + str(x) + '_hostname.txt | grep "h" | cut -d\' \' -f2)" >> ~/onlab/router' + str(x) + '/router' + str(x) + '_name.txt')
     with open('./router' + str(x) + '/router' + str(x) + '_name.txt','r') as file_1:
         for line in file_1.readlines():
+            #print(line)
             line = line.replace('\n', '')
             newitem.name = line
     os.system('echo "$(cat ~/onlab/router' + str(x) + '/router' + str(x) + '_routes.txt | grep "^L " | cut -d\' \' -f9 | cut -d\'/\' -f1)" >> ~/onlab/router' + str(x) + '/router' + str(x) + '_locales.txt')
@@ -37,33 +41,54 @@ for x in range(1, routersNumber + 1):
             #print(line)
             line = line.replace('\n', '')
             newitem.masks.append(line)
+    os.system('echo "$(cat ~/onlab/router' + str(x) + '/router' + str(x) + '_routes.txt | grep "^C " | cut -d\' \' -f9 | cut -d\'/\' -f1)" >> ~/onlab/router' + str(x) + '/router' + str(x) + '_networks.txt')
+    with open('./router' + str(x) + '/router' + str(x) + '_networks.txt', 'r') as file_4:
+        for line in file_4.readlines():
+            #print(line)
+            line = line.replace('\n', '')
+            newitem.networks.append(line)
     hosts.append(newitem)
-
-    for all in hosts:
-        print(all.name)
-        for i in all.ips:
-            print(i)
-        for i in all.masks:
-            print(i)
+'''
+for all in hosts:
+    print(all.name)
+    for i in all.ips:
+        print(i)
+    for i in all.masks:
+        print(i)
+    for i in all.networks:
+        print(i)
+    print("")
+'''
 
 for all in hosts:
     G.add_node(all.name)
     G.add_nodes_from([all.name], ips = all.ips)
     G.add_nodes_from([all.name], masks = all.masks)
+    G.add_nodes_from([all.name], networks = all.networks)
+
+for i in range(len(hosts)-1):
+    for j in range(i+1, len(hosts)):
+        currentelement = hosts[i]
+        nextelement = hosts[j]
+        for crnws in currentelement.networks:
+            for nxnws in nextelement.networks:
+                if crnws == nxnws:
+                    G.add_edge(currentelement.name, nextelement.name)
+
+for edge in nx.bfs_edges(G, source="R1"):
+    print("Edge:", edge)
+#path = list(nx.algorithms.bfs_edges(G, source=1))
+#print(path)
+#path_edges = list(path, path[1:])
+
 
-for all in hosts:
-    for toall in hosts:
-        for ina in all.ips:
-            for inb in toall.ips:
-                if ina == inb:
-                    G.add_edge(all.name, toall.name)
 print(G.nodes.data())
 nx.draw_networkx(G)
 plt.show()
 
     
-#for x in range(1, routersNumber + 1 ):
-    #os.system('rm ~/onlab/router' + str(x) + '/router' + str(x) + '_locales.txt ~/onlab/router' + str(x) + '/router' + str(x) + '_name.txt ~/onlab/router' + str(x) + '/router' + str(x) + '_masks.txt')
+for x in range(1, routersNumber + 1 ):
+    os.system('rm ~/onlab/router' + str(x) + '/router' + str(x) + '_locales.txt ~/onlab/router' + str(x) + '/router' + str(x) + '_name.txt ~/onlab/router' + str(x) + '/router' + str(x) + '_masks.txt ~/onlab/router' + str(x) + '/router' + str(x) + '_networks.txt')
 
 
 
diff --git a/router1/router1_locales.txt b/router1/router1_locales.txt
deleted file mode 100644
index 8b13789..0000000
--- a/router1/router1_locales.txt
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/router1/router1_masks.txt b/router1/router1_masks.txt
deleted file mode 100644
index 8b13789..0000000
--- a/router1/router1_masks.txt
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/router1/router1_name.txt b/router1/router1_name.txt
deleted file mode 100644
index 1e1244e..0000000
--- a/router1/router1_name.txt
+++ /dev/null
@@ -1 +0,0 @@
-R1
diff --git a/router1/router1_routes.txt b/router1/router1_routes.txt
index 1e2ce4d..70c7425 100644
--- a/router1/router1_routes.txt
+++ b/router1/router1_routes.txt
@@ -1,11 +1,18 @@
 Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
-       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area 
+       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
        N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
-       E1 - OSPF external type 1, E2 - OSPF external type 2
-       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
-       ia - IS-IS inter area, * - candidate default, U - per-user static route
-       o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
-       a - application route
-       + - replicated route, % - next hop override, p - overrides from PfR
+       E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
+       i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
+       * - candidate default, U - per-user static route, o - ODR
+       P - periodic downloaded static route
 
-Gateway of last resort is not set
\ No newline at end of file
+Gateway of last resort is not set
+
+     192.168.1.0/24 is variably subnetted, 2 subnets, 2 masks
+C        192.168.1.0/24 is directly connected, GigabitEthernet0/0/0
+L        192.168.1.1/32 is directly connected, GigabitEthernet0/0/0
+S    192.168.2.0/24 [1/0] via 192.168.1.2
+     192.168.5.0/24 is variably subnetted, 2 subnets, 2 masks
+C        192.168.5.0/24 is directly connected, GigabitEthernet0/0/1
+L        192.168.5.1/32 is directly connected, GigabitEthernet0/0/1
+          
\ No newline at end of file
diff --git a/router2/router2_locales.txt b/router2/router2_locales.txt
deleted file mode 100644
index 8b13789..0000000
--- a/router2/router2_locales.txt
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/router2/router2_masks.txt b/router2/router2_masks.txt
deleted file mode 100644
index 8b13789..0000000
--- a/router2/router2_masks.txt
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/router2/router2_name.txt b/router2/router2_name.txt
deleted file mode 100644
index 40d37fc..0000000
--- a/router2/router2_name.txt
+++ /dev/null
@@ -1 +0,0 @@
-R2
diff --git a/router2/router2_routes.txt b/router2/router2_routes.txt
index 1e2ce4d..2e232b9 100644
--- a/router2/router2_routes.txt
+++ b/router2/router2_routes.txt
@@ -1,11 +1,17 @@
 Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
-       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area 
+       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
        N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
-       E1 - OSPF external type 1, E2 - OSPF external type 2
-       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
-       ia - IS-IS inter area, * - candidate default, U - per-user static route
-       o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
-       a - application route
-       + - replicated route, % - next hop override, p - overrides from PfR
+       E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
+       i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
+       * - candidate default, U - per-user static route, o - ODR
+       P - periodic downloaded static route
 
-Gateway of last resort is not set
\ No newline at end of file
+Gateway of last resort is not set
+
+     192.168.1.0/24 is variably subnetted, 2 subnets, 2 masks
+C        192.168.1.0/24 is directly connected, GigabitEthernet0/0/0
+L        192.168.1.2/32 is directly connected, GigabitEthernet0/0/0
+     192.168.2.0/24 is variably subnetted, 2 subnets, 2 masks
+C        192.168.2.0/24 is directly connected, GigabitEthernet0/0/1
+L        192.168.2.2/32 is directly connected, GigabitEthernet0/0/1
+S    192.168.3.0/24 [1/0] via 192.168.2.1
\ No newline at end of file
diff --git a/router3/router3_locales.txt b/router3/router3_locales.txt
deleted file mode 100644
index 8b13789..0000000
--- a/router3/router3_locales.txt
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/router3/router3_masks.txt b/router3/router3_masks.txt
deleted file mode 100644
index 8b13789..0000000
--- a/router3/router3_masks.txt
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/router3/router3_name.txt b/router3/router3_name.txt
deleted file mode 100644
index a773565..0000000
--- a/router3/router3_name.txt
+++ /dev/null
@@ -1 +0,0 @@
-R3
diff --git a/router3/router3_routes.txt b/router3/router3_routes.txt
index 1e2ce4d..e7b73c4 100644
--- a/router3/router3_routes.txt
+++ b/router3/router3_routes.txt
@@ -1,11 +1,16 @@
 Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
-       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area 
+       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
        N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
-       E1 - OSPF external type 1, E2 - OSPF external type 2
-       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
-       ia - IS-IS inter area, * - candidate default, U - per-user static route
-       o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
-       a - application route
-       + - replicated route, % - next hop override, p - overrides from PfR
+       E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
+       i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
+       * - candidate default, U - per-user static route, o - ODR
+       P - periodic downloaded static route
 
-Gateway of last resort is not set
\ No newline at end of file
+Gateway of last resort is not set
+
+     192.168.2.0/24 is variably subnetted, 2 subnets, 2 masks
+C        192.168.2.0/24 is directly connected, GigabitEthernet0/0/1
+L        192.168.2.1/32 is directly connected, GigabitEthernet0/0/1
+     192.168.3.0/24 is variably subnetted, 2 subnets, 2 masks
+C        192.168.3.0/24 is directly connected, Loopback0
+L        192.168.3.1/32 is directly connected, Loopback0
\ No newline at end of file
diff --git a/router4/router4_hostname.txt b/router4/router4_hostname.txt
new file mode 100644
index 0000000..15f9385
--- /dev/null
+++ b/router4/router4_hostname.txt
@@ -0,0 +1 @@
+hostname R4
\ No newline at end of file
diff --git a/router4/router4_routes.txt b/router4/router4_routes.txt
new file mode 100644
index 0000000..a49869b
--- /dev/null
+++ b/router4/router4_routes.txt
@@ -0,0 +1,18 @@
+Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
+       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
+       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
+       E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
+       i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
+       * - candidate default, U - per-user static route, o - ODR
+       P - periodic downloaded static route
+
+Gateway of last resort is not set
+
+     192.168.3.0/24 is variably subnetted, 2 subnets, 2 masks
+C        192.168.3.0/24 is directly connected, GigabitEthernet0/0/0
+L        192.168.3.2/32 is directly connected, GigabitEthernet0/0/0
+     192.168.5.0/24 is variably subnetted, 2 subnets, 2 masks
+C        192.168.5.0/24 is directly connected, GigabitEthernet0/0/1
+L        192.168.5.2/32 is directly connected, GigabitEthernet0/0/1
+C        192.168.6.0/24 is directly connected, GigabitEthernet0/0/1
+L        192.168.6.2/32 is directly connected, GigabitEthernet0/0/1
\ No newline at end of file
diff --git a/router5/router5_hostname.txt b/router5/router5_hostname.txt
new file mode 100644
index 0000000..5f7d3b2
--- /dev/null
+++ b/router5/router5_hostname.txt
@@ -0,0 +1 @@
+hostname R5
\ No newline at end of file
diff --git a/router5/router5_routes.txt b/router5/router5_routes.txt
new file mode 100644
index 0000000..6e5cf89
--- /dev/null
+++ b/router5/router5_routes.txt
@@ -0,0 +1,15 @@
+Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
+       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
+       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
+       E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
+       i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
+       * - candidate default, U - per-user static route, o - ODR
+       P - periodic downloaded static route
+
+Gateway of last resort is not set
+
+     192.168.4.0/24 is variably subnetted, 2 subnets, 2 masks
+C        192.168.4.0/24 is directly connected, GigabitEthernet0/0/1
+L        192.168.4.2/32 is directly connected, GigabitEthernet0/0/1
+C        192.168.6.0/24 is directly connected, GigabitEthernet0/0/1
+L        192.168.6.1/32 is directly connected, GigabitEthernet0/0/1
\ No newline at end of file
-- 
GitLab