diff --git a/apache-fake-log-gen.py b/apache-fake-log-gen.py index fe4784f..afdb762 100644 --- a/apache-fake-log-gen.py +++ b/apache-fake-log-gen.py @@ -25,8 +25,10 @@ def __init__(self, value): def __iter__(self): """Return the match method once, then stop""" - yield self.match - raise StopIteration + try: + yield self.match + except StopIteration: + return def match(self, *args): """Indicate whether or not to enter a case suite""" @@ -80,32 +82,35 @@ def match(self, *args): flag = True while (flag): - if args.sleep: - increment = datetime.timedelta(seconds=args.sleep) - else: - increment = datetime.timedelta(seconds=random.randint(30, 300)) - otime += increment - - ip = faker.ipv4() - dt = otime.strftime('%d/%b/%Y:%H:%M:%S') - tz = datetime.datetime.now(local).strftime('%z') - vrb = numpy.random.choice(verb,p=[0.6,0.1,0.1,0.2]) - - uri = random.choice(resources) - if uri.find("apps")>0: - uri += str(random.randint(1000,10000)) - - resp = numpy.random.choice(response,p=[0.9,0.04,0.02,0.04]) - byt = int(random.gauss(5000,50)) - referer = faker.uri() - useragent = numpy.random.choice(ualist,p=[0.5,0.3,0.1,0.05,0.05] )() - if log_format == "CLF": - f.write('%s - - [%s %s] "%s %s HTTP/1.0" %s %s\n' % (ip,dt,tz,vrb,uri,resp,byt)) - elif log_format == "ELF": - f.write('%s - - [%s %s] "%s %s HTTP/1.0" %s %s "%s" "%s"\n' % (ip,dt,tz,vrb,uri,resp,byt,referer,useragent)) - f.flush() - - log_lines = log_lines - 1 - flag = False if log_lines == 0 else True - if args.sleep: - time.sleep(args.sleep) + try: + if args.sleep: + increment = datetime.timedelta(seconds=args.sleep) + else: + increment = datetime.timedelta(seconds=random.randint(30, 300)) + otime += increment + + ip = faker.ipv4() + dt = otime.strftime('%d/%b/%Y:%H:%M:%S') + tz = datetime.datetime.now(local).strftime('%z') + vrb = numpy.random.choice(verb,p=[0.6,0.1,0.1,0.2]) + + uri = random.choice(resources) + if uri.find("apps")>0: + uri += str(random.randint(1000,10000)) + + resp = numpy.random.choice(response,p=[0.9,0.04,0.02,0.04]) + byt = int(random.gauss(5000,50)) + referer = faker.uri() + useragent = numpy.random.choice(ualist,p=[0.5,0.3,0.1,0.05,0.05] )() + if log_format == "CLF": + f.write('%s - - [%s %s] "%s %s HTTP/1.0" %s %s\n' % (ip,dt,tz,vrb,uri,resp,byt)) + elif log_format == "ELF": + f.write('%s - - [%s %s] "%s %s HTTP/1.0" %s %s "%s" "%s"\n' % (ip,dt,tz,vrb,uri,resp,byt,referer,useragent)) + f.flush() + + log_lines = log_lines - 1 + flag = False if log_lines == 0 else True + if args.sleep: + time.sleep(args.sleep) + except KeyboardInterrupt: + sys.exit(0)