diff options
Diffstat (limited to 'mirror-weekly.sh')
| -rwxr-xr-x | mirror-weekly.sh | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/mirror-weekly.sh b/mirror-weekly.sh new file mode 100755 index 0000000..7a5c134 --- /dev/null +++ b/mirror-weekly.sh @@ -0,0 +1,53 @@ +#!/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" |
