summaryrefslogtreecommitdiffstats
path: root/retiolum/scripts
diff options
context:
space:
mode:
authorroot <root@no_omo.retiolum>2013-03-07 16:17:43 +0100
committerroot <root@no_omo.retiolum>2013-03-07 16:17:43 +0100
commit96d7b3cb6232ea02bcec4c282dff94d9634a33b7 (patch)
tree981db30f172147203bdcf5c8a4a1f57aa4baad2f /retiolum/scripts
parentef4eb3189363f5cd9a33b43693322a68d3142979 (diff)
emergency commit
Diffstat (limited to 'retiolum/scripts')
-rw-r--r--retiolum/scripts/adv_graphgen/find-all-nodes.py59
1 files changed, 59 insertions, 0 deletions
diff --git a/retiolum/scripts/adv_graphgen/find-all-nodes.py b/retiolum/scripts/adv_graphgen/find-all-nodes.py
new file mode 100644
index 00000000..ae0fae8f
--- /dev/null
+++ b/retiolum/scripts/adv_graphgen/find-all-nodes.py
@@ -0,0 +1,59 @@
+#!/usr/bin/python
+
+def find_potential_super(path="/etc/tinc/retiolum/hosts"):
+ import os
+ import re
+
+ needle_addr = re.compile("Address\s*=\s*(.*)")
+ needle_port = re.compile("Port\s*=\s*(.*)")
+ for f in os.listdir(path):
+ with open(path+"/"+f) as of:
+ addrs = []
+ port = "655"
+
+ for line in of.readlines():
+
+ addr_found = needle_addr.match(line)
+ if addr_found:
+ addrs.append(addr_found.group(1))
+
+ port_found = needle_port.match(line)
+ if port_found:
+ port = port_found.group(1)
+
+ if addrs : yield (f ,[(addr ,int(port)) for addr in addrs])
+
+def try_connect(addr):
+ try:
+ from socket import socket,AF_INET,SOCK_STREAM
+ s = socket(AF_INET,SOCK_STREAM)
+ s.settimeout(2)
+ s.connect(addr)
+ s.settimeout(None)
+ s.close()
+ return addr
+ except Exception as e:
+ pass
+ #return ()
+
+def check_one_super(ha):
+ host,addrs = ha
+ valid_addrs = []
+ for addr in addrs:
+ ret = try_connect(addr)
+ if ret: valid_addrs.append(ret)
+ if valid_addrs: return (host,valid_addrs)
+
+def check_all_the_super(path="/etc/tinc/retiolum/hosts"):
+ from multiprocessing import Pool
+ p = Pool(20)
+ return filter(None,p.map(check_one_super,find_potential_super(path)))
+
+
+
+if __name__ == "__main__":
+ """
+ usage
+ """
+ for host,addrs in check_all_the_super():
+ print host,addrs