diff options
author | tv <tv@also> | 2011-05-29 15:47:21 +0200 |
---|---|---|
committer | tv <tv@also> | 2011-05-29 15:47:21 +0200 |
commit | 12c77cdbfa4ec48d935af3ae7cf1118e38bec6e1 (patch) | |
tree | 2fdf8b557d2a2a1edaba2be569c2110c3822559f /people/arping_users.py | |
parent | edaa1d7f7a0ed33c019fce185b8aff7563498b6e (diff) |
lowered filesystem hierarchy--everything are modules
Diffstat (limited to 'people/arping_users.py')
-rwxr-xr-x | people/arping_users.py | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/people/arping_users.py b/people/arping_users.py new file mode 100755 index 00000000..c576e4f3 --- /dev/null +++ b/people/arping_users.py @@ -0,0 +1,54 @@ +#!/usr/bin/python +import subprocess,re,logging,sys + +from arping import arpingy +from multiprocessing import Pool +DEV='eth0' +MAC_NAMES='mac_names.lst' +data = [] +ret = {} +verb = False + +if len(sys.argv) > 1 and sys.argv[1] == 'v': + verb = True +def get_own_addr(): + data = subprocess.Popen(['/sbin/ifconfig',DEV], + stdout=subprocess.PIPE).communicate()[0].replace('\n','') + return re.sub(r'.*HWaddr ([0-9A-Fa-f:]*).*inet addr:([0-9.]*).*' , + r'\1 \2',data).split() + +def load_names(MAC_NAMES): + names = {} + f = open(MAC_NAMES) + for l in f: + mac,name = l.split() + names[mac] = name.replace('\n','') + f.close() + return names + +def arping_helper(dic): + return arpingy(**dic) + +for first in range(4): + for second in range(255): + data.append({'iprange':'10.42.'+str(first)+'.'+str(second),'iface':DEV}) + +names = load_names(MAC_NAMES) +try: + p = Pool(20) + ret = filter(lambda x:x , p.map(arping_helper, data)) + myip,mymac = get_own_addr() + ret.append([mymac,myip]) + p.terminate() +except Exception as e: + print 'you fail '+str(e) + + + +for p in ret: + if verb: + print p[0] + " => " + p[1] + if p[1] in names: + print names[p[1]]+ " is online" + + |