Naposledy aktivní 1 month ago

Erreur32's Avatar Erreur32 revidoval tento gist 6 months ago. Přejít na revizi

Žádné změny

Erreur32's Avatar Erreur32 revidoval tento gist 7 months ago. Přejít na revizi

1 file changed, 89 insertions

compare-umami-npm.sh(vytvořil soubor)

@@ -0,0 +1,89 @@
1 + #!/bin/bash
2 + # ==========================================================
3 + # Compare les data-website-id entre Nginx Proxy Manager (NPM)
4 + # et Umami (PostgreSQL)
5 + # !!! UMAMI and NPM need to be in DOCKER !!!!!
6 + # ==========================================================
7 +
8 + NPM_PATH="/home/docker/nginx_proxy/data/nginx/proxy_host/"
9 + OUT_DIR="$(pwd)"
10 + INVALID_FILE="$OUT_DIR/npm_invalid.txt"
11 +
12 + # --- Vérification des fichiers NPM ---
13 + echo "[+] Vérification des fichiers NPM..."
14 + > "$INVALID_FILE"
15 + for f in "$NPM_PATH"/*.conf; do
16 + id=$(grep -o 'data-website-id="[a-f0-9-]*"' "$f" | sed -E 's/.*="([a-f0-9-]+)".*/\1/')
17 + name=$(grep -m2 '^# ' "$f" | tail -n1 | grep -v -- '------------------------------------------------------------' | sed 's/^# //')
18 + num=$(basename "$f")
19 + if [[ -n "$id" && -z "$name" ]]; then
20 + echo "$id | (vide) | $num" >> "$INVALID_FILE"
21 + fi
22 + done
23 +
24 + # --- Extraction NPM (valide uniquement) ---
25 + echo "[+] Extraction des sites NPM..."
26 + > "$OUT_DIR/npm_sites.txt"
27 +
28 + for file in "$NPM_PATH"/*.conf; do
29 + site=$(grep -m2 '^# ' "$file" | tail -n1 | grep -v -- '------------------------------------------------------------' | sed 's/^# //')
30 + id=$(grep -o 'data-website-id="[a-f0-9-]*"' "$file" | sed -E 's/.*="([a-f0-9-]+)".*/\1/')
31 + conf=$(basename "$file")
32 + if [[ -n "$id" && -n "$site" && "$site" != "------------------------------------------------------------" ]]; then
33 + echo "$id | $site | $conf" >> "$OUT_DIR/npm_sites.txt"
34 + fi
35 + done
36 +
37 + sort -u "$OUT_DIR/npm_sites.txt" -o "$OUT_DIR/npm_sites.txt"
38 +
39 + # --- Nettoyage avant fusion ---
40 + grep -E '[0-9a-f-]{8}-' "$OUT_DIR/npm_sites.txt" | grep '|' > "$OUT_DIR/npm_sites.tmp" && mv "$OUT_DIR/npm_sites.tmp" "$OUT_DIR/npm_sites.txt"
41 +
42 + # --- Extraction Umami ---
43 + echo "[+] Extraction des sites Umami (PostgreSQL)..."
44 + docker exec -t umami-db psql -U umami -d umami -P pager=off \
45 + -c "SELECT website_id, name FROM website;" > "$OUT_DIR/umami_sites_raw.txt"
46 +
47 + grep -oE '[0-9a-f-]{36} *\| *[A-Za-z0-9._-]+' "$OUT_DIR/umami_sites_raw.txt" \
48 + | sed 's/ *| */ | /' | sort -u > "$OUT_DIR/umami_sites.txt"
49 +
50 + # Nettoyage des lignes Umami vides ou invalides
51 + grep -E '[0-9a-f-]{8}-' "$OUT_DIR/umami_sites.txt" | grep '|' > "$OUT_DIR/umami_sites.tmp" && mv "$OUT_DIR/umami_sites.tmp" "$OUT_DIR/umami_sites.txt"
52 +
53 + # --- Fusion ---
54 + echo "[+] Fusion des deux listes..."
55 + echo "UUID | NPM_SITE | CONF_FILE | UMAMI_SITE" > "$OUT_DIR/merged_sites.txt"
56 + echo "----------------------------------------------------------------" >> "$OUT_DIR/merged_sites.txt"
57 +
58 + join -t'|' -a1 -a2 -e" " -o '0,1.2,1.3,2.2' \
59 + <(sort -t'|' -k1,1 "$OUT_DIR/npm_sites.txt") \
60 + <(sort -t'|' -k1,1 "$OUT_DIR/umami_sites.txt") \
61 + >> "$OUT_DIR/merged_sites.txt"
62 +
63 + # --- Résumé ---
64 + echo
65 + echo "=== Résumé ==="
66 + echo "→ NPM valides : $OUT_DIR/npm_sites.txt"
67 + echo "→ NPM invalides : $OUT_DIR/npm_invalid.txt"
68 + echo "→ Umami : $OUT_DIR/umami_sites.txt"
69 + echo "→ Fusion : $OUT_DIR/merged_sites.txt"
70 + echo
71 + echo "✅ IDs présents dans les deux = deux noms affichés"
72 + echo "❌ Champ vide = site manquant d’un côté"
73 + echo
74 + echo "=== Résultat du fichier fusionné ==="
75 + echo
76 + column -t -s'|' "$OUT_DIR/merged_sites.txt"
77 +
78 + # --- Tableau séparé : fichiers NPM invalides ---
79 + if [[ -s "$INVALID_FILE" ]]; then
80 + echo
81 + echo "=== FICHIERS NPM SANS NOM DE DOMAINE VALIDE ==="
82 + echo
83 + echo "UUID | NPM_SITE | CONF_FILE"
84 + echo "-------------------------------------------"
85 + column -t -s'|' "$INVALID_FILE"
86 + else
87 + echo
88 + echo "✅ Aucun fichier NPM vide détecté."
89 + fi
Novější Starší