#!/usr/bin/env python3 import re import sys import os matching_ips = re.compile(r"(?P\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)