spb/cluster-skill
Public
HTML 57.2%
Shell 19.1%
Python 11.2%
CSS 7.4%
JavaScript 5.1%
1#!/usr/bin/env bash2# migrate-watch.sh — surveille une liste de domaines ; dès que le DNS autoritaire pointe vers la passerelle,3# crée la route Caddy (+ redirection apex si l'apex pointe aussi vers la passerelle) et vérifie en HTTPS.4# Usage : migrate-watch.sh <fichier-liste> [passerelle=BHS64] [durée max en s=7200]5# fichier-liste : une ligne par site « <domaine> <alias>:<port> [<alias>:<port>…] » (# = commentaire)6# Journal : ~/Desktop/cluster-skill/maclustr-tunnel/migrate.log7set -uo pipefail8LIST=${1:?liste}; GW=${2:-BHS64}; MAX=${3:-7200}9HERE="$(cd "$(dirname "$0")" && pwd)"; MLT="$HERE/../mlt"; LOG="$HERE/migrate.log"10case "$GW" in BHS64) IP=51.161.112.61;; R9128) IP=51.255.75.61;; *) echo "passerelle ?"; exit 1;; esac11DONE_DIR=$(mktemp -d)12log(){ echo "$(date '+%F %T') $*" | tee -a "$LOG"; }13apex_of(){ echo "$1" | sed -E 's/^(www|app|console|node|cloud|git)\.//'; }14t0=$(date +%s)15log "== surveillance de $(grep -c -v -E '^\s*(#|$)' "$LIST") domaines → $GW ($IP)"16while :; do17 left=018 while read -r dom ups; do19 [[ -z "$dom" || "$dom" =~ ^# ]] && continue20 [ -f "$DONE_DIR/$dom" ] && continue21 left=$((left+1))22 apex=$(apex_of "$dom"); ns=$(dig +short NS "$apex" | head -1)23 a=$(dig +short "$dom" A @"$ns" 2>/dev/null | tail -1)24 [ "$a" = "$IP" ] || continue25 log "→ $dom pointe vers $GW : création de la route ($ups)"26 "$MLT" -g "$GW" add "$dom" $ups 2>&1 | grep -v '^{' | sed 's/^/ /' | tee -a "$LOG"27 if [ "$apex" != "$dom" ]; then28 aa=$(dig +short "$apex" A @"$ns" 2>/dev/null | tail -1)29 if [ "$aa" = "$IP" ]; then "$MLT" -g "$GW" redirect "$apex" "$dom" 2>&1 | grep -v '^{' | sed 's/^/ /' | tee -a "$LOG"; else log " apex $apex = ${aa:-∅} (pas de redirection posée)"; fi30 fi31 sleep 832 code=$(/usr/bin/curl -s -m 40 --resolve "$dom:443:$IP" -o /dev/null -w '%{http_code}' "https://$dom/")33 log " https://$dom via $GW → HTTP $code"34 touch "$DONE_DIR/$dom"35 done < "$LIST"36 [ $left -eq 0 ] && { log "== tous les domaines migrés"; break; }37 [ $(( $(date +%s) - t0 )) -gt "$MAX" ] && { log "== délai dépassé, restent $left domaine(s)"; break; }38 sleep 2039done40