summaryrefslogtreecommitdiff
path: root/mirror-weekly.sh
diff options
context:
space:
mode:
authordoc <doc@filenotfound.org>2025-10-01 20:35:47 +0000
committerdoc <doc@filenotfound.org>2025-10-01 20:35:47 +0000
commit772152a5810aa8c4e03cf167381aadc4ec00499f (patch)
treeba9418142f88622da878d9a3483c5da2da3e5c83 /mirror-weekly.sh
parent13eb2d51c7284472efabc278bf9b7ec0b8575e47 (diff)
mirror scriptsHEADmaster
Diffstat (limited to 'mirror-weekly.sh')
-rwxr-xr-xmirror-weekly.sh53
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"