diff options
| author | krebs <krebs@fuerkrebs> | 2011-11-04 12:44:25 -0400 | 
|---|---|---|
| committer | krebs <krebs@fuerkrebs> | 2011-11-04 12:44:25 -0400 | 
| commit | 207a4ec405d3229a9d2e200b7803c3068d513265 (patch) | |
| tree | 28824c72755215d83148dae2e2f0aa7356ddeffc | |
| parent | 5876c5a411e77b6518148712abc0c5d5bd45049e (diff) | |
//census: fix arping scripts, print data in json
| -rwxr-xr-x | census/arping.py | 3 | ||||
| -rwxr-xr-x | census/arping_users.py | 27 | 
2 files changed, 24 insertions, 6 deletions
diff --git a/census/arping.py b/census/arping.py index 3cffa6be..ed257441 100755 --- a/census/arping.py +++ b/census/arping.py @@ -11,11 +11,10 @@ try:    from scapy.all import * #might throws "no such module"    def arpingy(iprange="10.42.1.0/24",iface='eth0'): -    log.debug("pinging "+ str(iprange))      """Arping function takes IP Address or Network, returns nested mac/ip list"""      try:        conf.verb=0 -      ans,unans=arping(iprange,iface=iface,timeout=0.4,retry=1) +      ans,unans=arping(iprange,iface=iface,timeout=3,retry=1)        collection = []        for snd, rcv in ans: diff --git a/census/arping_users.py b/census/arping_users.py index f4f356bf..eb47f308 100755 --- a/census/arping_users.py +++ b/census/arping_users.py @@ -1,11 +1,11 @@  #!/usr/bin/python  import subprocess,re,logging,sys - +import json  from arping import arpingy  from multiprocessing import Pool -logging.basicConfig(level=logging.DEBUG) +logging.basicConfig(level=logging.WARNING)  log = logging.getLogger("main") -DEV='eth0' +DEV='eth1'  MAC_NAMES='mac_names.lst'  data = []  my_addr = False @@ -29,12 +29,14 @@ def load_names(mac_file):      names[mac] = name.replace('\n','')    f.close()    return names +  def print_config():    log.info("My Addr : %s" %str(my_addr))    log.info("MAC Names file: %s " %MAC_NAMES)    log.debug("Loaded names : ")    for mac,name in my_names.iteritems():      log.debug("%s => %s" %(mac,name)) +  def init():    my_addr = get_own_addr()    my_names = load_names(MAC_NAMES) @@ -52,22 +54,39 @@ def main():        data.append({'iprange':'10.42.'+str(first)+'.'+str(second),'iface':DEV})    try:      log.info("creating new Pool") -    p = Pool(30) +    p = Pool(35)      ret = filter(lambda x:x , p.map(arping_helper, data))      log.info("killing it")      p.terminate()    except Exception as e:      print 'you fail '+str(e) +    sys.exit(1)    myip,mymac = get_own_addr()    ret.append([mymac,myip])  +  print_json(ret) +  #print_names(ret) + +def print_names(ret):    for p in ret:      if not quiet:        print p[0] + " => " + p[1]      if p[1] in names:        print names[p[1]]+ " is online" +def print_json(ret): +  from time import time +  output = {} +  output["timestamp"] = time() +  for i in ret: +    mac = i[0] +    ip  = i[1] +    if i[0] not in output: +      output[mac] = [] +    output[mac].append(ip) +  print json.dumps(output) +  if __name__ == "__main__":    log.debug("starting arping_users")    main()  | 
