blob: 7a5c134eafb9d2efb262e9f06b0f3328f143970d (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
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"
|