From 65f98dfdda97df74a1c3aec3f757d875f7da408c Mon Sep 17 00:00:00 2001 From: root Date: Fri, 9 Sep 2011 15:17:43 +0200 Subject: //census: finish refactoring of census i just forgot about this mess. It is refactored from the original script, using all the pythonic goodness. The arping.py command is a bit tweaked, should be faster now --- census/arping.py | 2 +- census/arping_users.py | 28 +++++++++++++++------------- 2 files changed, 16 insertions(+), 14 deletions(-) (limited to 'census') diff --git a/census/arping.py b/census/arping.py index 3245f1ee..3cffa6be 100755 --- a/census/arping.py +++ b/census/arping.py @@ -15,7 +15,7 @@ try: """Arping function takes IP Address or Network, returns nested mac/ip list""" try: conf.verb=0 - ans,unans=arping(iprange,iface=iface,timeout=1,retry=3) + ans,unans=arping(iprange,iface=iface,timeout=0.4,retry=1) collection = [] for snd, rcv in ans: diff --git a/census/arping_users.py b/census/arping_users.py index f0df4924..f4f356bf 100755 --- a/census/arping_users.py +++ b/census/arping_users.py @@ -13,6 +13,7 @@ my_names = {} ret = {} quiet=False +names = {} if len(sys.argv) > 1 and sys.argv[1] == 'q': quiet=True def get_own_addr(): @@ -22,7 +23,6 @@ def get_own_addr(): r'\1 \2',data).split() def load_names(mac_file): - names = {} f = open(mac_file) for l in f: mac,name = l.split(' ',1) @@ -39,33 +39,35 @@ def init(): my_addr = get_own_addr() my_names = load_names(MAC_NAMES) +def arping_helper(dic): + log.debug("trying arpingy(%s)" %dic) + return arpingy(**dic) + def main(): init() print_config() - exit(0) - def arping_helper(dic): - return arpingy(**dic) - -for first in range(1,4): - for second in range(256): - data.append({'iprange':'10.42.'+str(first)+'.'+str(second),'iface':DEV}) + for first in range(1,4): + for second in range(256): + data.append({'iprange':'10.42.'+str(first)+'.'+str(second),'iface':DEV}) try: - p = Pool(20) + log.info("creating new Pool") + p = Pool(30) ret = filter(lambda x:x , p.map(arping_helper, data)) - myip,mymac = get_own_addr() - ret.append([mymac,myip]) + log.info("killing it") p.terminate() + except Exception as e: print 'you fail '+str(e) - - + myip,mymac = get_own_addr() + ret.append([mymac,myip]) for p in ret: if not quiet: print p[0] + " => " + p[1] if p[1] in names: print names[p[1]]+ " is online" + if __name__ == "__main__": log.debug("starting arping_users") main() -- cgit v1.2.3