La Paste
Create new paste
Pastes Archive
2025-08-29 16:35:38
copy
raw
download
#usage: show_upload_spikes.py [factor default 5] import os import sys import statistics baseDir = "/usr/local/www/apache24/data/of/gdata" factor = float(sys.argv[1]) if len(sys.argv) > 1 else 5.0 top = 200 files = [f for f in os.listdir(baseDir) if f.startswith("S_")] total = len(files) results = [] for i, fname in enumerate(files, 1): ip = fname[2:] path = os.path.join(baseDir, fname) with open(path, "rb") as f: lines = f.readlines()[-144:] values = [] for line in lines: parts = line.decode().strip().split(";") if len(parts) < 2: continue values.append(int(parts[1])) if values: avg = statistics.mean(values) spikes = [v for v in values if v > avg * factor] if spikes: maxSpike = max(spikes) mbit = (maxSpike * 8) / 300 / 1e6 results.append((ip, len(spikes), mbit)) percent = (i / total) * 100 print(f"[{i}/{total}] {percent:.1f}% {fname}", end="\r") print("\n") if results: results.sort(key=lambda x: (x[1], x[2]), reverse=True) print(f"{'IP':<20}{'Spikes':<10}{'Max speed (Mbit/s)':<20}") for ip, count, speed in results[:top]: print(f"{ip:<20}{count:<10}{speed:<20.2f}")
↑