| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- #!/usr/bin/env python3
- import re
- import sys
- import os
- matching_ips = re.compile(r"(?P<ip>\d+\.\d+\.\d+\.\d+:\d+)")
- data_in = [
- "192.168.2.208:5000",
- "192.168.2.208:5002",
- "192.168.2.209:5000",
- "192.168.2.79"
- ]
- data_out = [
- "192.168.2.120:1935"
- ]
- prev = ''
- def dehumanize(value):
- value = value.strip()
- if value.endswith("KB"):
- value = float(value[:-2])*1024
- elif value.endswith("MB"):
- value = float(value[:-2])*1024*1024
- elif value.endswith("B"):
- value = float(value[:-1])
-
- return int(value)
- def parse_res(res):
- if res is None:
- return
- out = [ o for o in res.split(" ") if len(o) > 1 ]
- for d in data_in:
- if d in out[0]:
- out[0] = d
- break
- return("%s %s" % (out[0], dehumanize(out[4])))
- def parse_file(fname):
- data=open(fname,"r").readlines()
- out = []
- for line in data:
- match = matching_ips.search(line)
- if match is None:
- continue
-
- res = None
- line = line.rstrip()
- for d in data_in:
- if d in line:
- res = line
-
- for d in data_out:
- if d in line:
- res = matching_ips.sub(d, prev)
-
- prev = line
- ret = parse_res(res)
- if ret is not None:
- out.append(ret)
-
- for i in data_in:
- valid = False
- for o in out:
- if i in o:
- valid = True
- if not valid:
- out.append("%s 0" % i)
- for i in data_out:
- valid = False
- for o in out:
- if i in o:
- valid = True
- if not valid:
- out.append("%s 0" % i)
- return out
- if __name__ == '__main__':
- if len(sys.argv) != 2:
- print("Usage: %s file" % sys.argv[0])
- sys.exit(1)
- f = sys.argv[1]
- if not os.path.isfile(f):
- print("%s is not a valid file" % f)
- sys.exit(2)
- for o in parse_file(f):
- print(o)
|