#!/bin/bash # alma-weekly.sh # Summarize AlmaLinux client demographics across the past 7 days LOGDIR="/var/log/mirrors" OUTFILE="$LOGDIR/alma-weekly-$(date +%F).log" echo "=== AlmaLinux Weekly Summary ($(date)) ===" > "$OUTFILE" # Gather the last 7 daily logs FILES=$(ls -1t $LOGDIR/alma-summary-*.log 2>/dev/null | head -n 7) if [ -z "$FILES" ]; then echo "No alma-summary logs found in $LOGDIR" >> "$OUTFILE" exit 1 fi # Roll up requests + unique clients per release awk ' /requests/ { reqs[$2]+=$1 clients[$2]+=$4 } END { for (r in reqs) { printf "%-6s %10d requests %6d unique clients (7-day total)\n", r, reqs[r], clients[r] } }' $FILES | sort -k2 -nr >> "$OUTFILE" echo "" >> "$OUTFILE" echo "=== Top 10 Clients by Requests (7-day total) ===" >> "$OUTFILE" # Top talkers (IP + release) across all 7 days awk ' $2 ~ /^[0-9]/ { count[$2" "$3]+=$1 } END { for (k in count) print count[k], k }' $FILES | sort -nr | head -n 10 >> "$OUTFILE"