Erreur32 hat die Gist bearbeitet 6 months ago. Zu Änderung gehen
Keine Änderungen
Erreur32 hat die Gist bearbeitet 7 months ago. Zu Änderung gehen
1 file changed, 89 insertions
compare-umami-npm.sh(Datei erstellt)
| @@ -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 | |
Neuer
Älter