Script Python pour générer de faux logs nginx
Script pouvant être utilisé à des fins de test.
Pour le lancer : python3 ./script (python3 doit être installé)
import random import time import sched scheduler = sched.scheduler(time.time, time.sleep) # Two IPs that will make 20% of the requests frequent_ips = ["192.168.1.1", "192.168.1.2"] def generate_ip(): if random.random() < 0.2: return random.choice(frequent_ips) return "{}.{}.{}.{}".format(random.randint(1, 255), random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)) def generate_log_entry(): ip = generate_ip() time_local = time.strftime("%d/%b/%Y:%H:%M:%S +0000", time.gmtime()) method = random.choice(["GET", "POST", "DELETE", "PUT"]) uri = random.choice(["/index.html", "/contact.html", "/products.html", "/about.html"]) protocol = "HTTP/1.1" status = random.choice(["200", "404", "500", "301"]) body_bytes_sent = random.randint(0, 5000) referer = "-" user_agent = "Mozilla/5.0 (compatible; FakeBrowser/1.0; +http://example.com)" return f'{ip} - - [{time_local}] "{method} {uri} {protocol}" {status} {body_bytes_sent} "{referer}" "{user_agent}"' def generate_log_file(filename, num_entries): with open(filename, "a") as file: for _ in range(num_entries): entry = generate_log_entry() file.write(entry + "\n") def log_message(message): timestamp = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) print(f"[{timestamp}] {message}") def scheduled_log_generation(sc, filename, num_entries, interval): log_message("Generating fake log entries for testing purposes.") generate_log_file(filename, num_entries) sc.enter(interval, 1, scheduled_log_generation, (sc, filename, num_entries, interval)) # Schedule the task log_file = "/var/log/nginx/access.log" num_entries_per_run = 1000 interval = 60 # seconds scheduler.enter(0, 1, scheduled_log_generation, (scheduler, log_file, num_entries_per_run, interval)) try: scheduler.run() except KeyboardInterrupt: print("Script execution interrupted by user.")