#!/bin/bash # mirror-weekly.sh # Summarize weekly client activity across Alma, Rocky, Arch, Gentoo LOGDIR="/var/log/nginx/" OUTDIR="/var/log/mirrors" OUTFILE="$OUTDIR/mirror-weekly-$(date +%F).log" mkdir -p "$OUTDIR" echo "=== Mirror Weekly Summary ($(date)) ===" > "$OUTFILE" # Which distros to track (pattern, label) declare -A DISTROS=( [alma]="alma AlmaLinux" [rocky]="rocky RockyLinux" [archlinux]="arch ArchLinux" [gentoo]="gentoo Gentoo" ) for key in "${!DISTROS[@]}"; do label=${DISTROS[$key]} echo "" >> "$OUTFILE" echo "=== $label ===" >> "$OUTFILE" # Requests + unique clients awk -v pat="$key" ' $7 ~ pat { reqs++ ips[$1]=1 } END { printf "%d requests, %d unique clients\n", reqs, length(ips) }' "$LOGDIR"/stygian_access.log >> "$OUTFILE" # Top 5 IPs awk -v pat="$key" ' $7 ~ pat { count[$1]++ } END { for (ip in count) print count[ip], ip }' "$LOGDIR"/stygian_access.log | sort -nr | head -n 5 >> "$OUTFILE" done echo "" >> "$OUTFILE" echo "=== Totals Across All Distros ===" >> "$OUTFILE" awk '$7 ~ /(alma|rocky|archlinux|gentoo)/ { total++ ips[$1]=1 } END { printf "%d requests across all, %d unique clients total\n", total, length(ips) }' "$LOGDIR"/stygian_access.log >> "$OUTFILE"