#!/usr/bin/env bash set -euo pipefail START_TIME=$(date +%s) BASE_URL="https://git.thomasmlg.fr/thomas/Docker/raw/branch/release" WORKDIR="/opt/lxc-updater" LOG_ROOT="/var/log/lxc-updater-TM" DATE="$(date +%F)" TS="$(date +%H:%M:%S)" TS_FILE="$(date +%H%M%S)" LOG_DIR="${LOG_ROOT}/${DATE}" RUN_LOG="${LOG_DIR}/lxc-updater-run.log" RUN_LOG_ARCHIVE="${LOG_DIR}/lxc-updater-run-${TS_FILE}.log" mkdir -p "$WORKDIR" "$LOG_DIR" : > "$RUN_LOG" : > "$RUN_LOG_ARCHIVE" log() { echo "$1" echo "$1" >>"$RUN_LOG" echo "$1" >>"$RUN_LOG_ARCHIVE" } send_matrix() { local message="$1" MATRIX_URL="https://element.thomasmlg.fr" ROOM_ID="!qMftKWAtfFIQzithEu:malgouyres" ACCESS_TOKEN="syt_YWRtaW4_HyZwdmZXmngmUNGdxgTV_0tb2UI" local payload payload="$(jq -Rn --arg msg "$message" '{msgtype:"m.text", body:$msg}')" curl -sS -X POST \ -H "Authorization: Bearer ${ACCESS_TOKEN}" \ -H "Content-Type: application/json" \ -d "$payload" \ "${MATRIX_URL}/_matrix/client/r0/rooms/${ROOM_ID}/send/m.room.message" \ >>"$RUN_LOG" 2>&1 } on_error() { local end_time duration end_time=$(date +%s) duration=$((end_time - START_TIME)) send_matrix "❌ LXC Updater (TM) πŸ–₯️ Conteneur : $(hostname) πŸ“… Date : ${DATE} πŸ•’ Heure : $(date +%H:%M:%S) ⚠️ Statut : Γ©chec de la mise Γ  jour ⏱ DurΓ©e : ${duration}s" } trap on_error ERR header() { local step="$1" clear echo "╔══════════════════════════════════════╗" echo "β•‘ LXC Updater (TM) β•‘" echo "β•šβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•" echo "πŸ–₯️ Conteneur : $(hostname)" echo "πŸ“… Date : ${DATE} πŸ•’ Heure : $(date +%H:%M:%S)" if [[ -n "$step" ]]; then echo "πŸ“Œ Γ‰tape : ${step}" fi echo "" } # ------------------------------------------------ # TΓ©lΓ©chargement des scripts # ------------------------------------------------ header "" echo "⬇️ TΓ©lΓ©chargement des scripts..." curl -fsSL "${BASE_URL}/detect.sh" -o "${WORKDIR}/detect.sh" >>"$RUN_LOG" 2>&1 curl -fsSL "${BASE_URL}/update.sh" -o "${WORKDIR}/update.sh" >>"$RUN_LOG" 2>&1 chmod +x "${WORKDIR}/detect.sh" "${WORKDIR}/update.sh" # ------------------------------------------------ # DΓ©tection silencieuse # ------------------------------------------------ MODE="$("${WORKDIR}/detect.sh")" # ------------------------------------------------ # Notification dΓ©but # ------------------------------------------------ send_matrix "πŸ”„ LXC Updater (TM) πŸ–₯️ Conteneur : $(hostname) πŸ“… Date : ${DATE} πŸ•’ Heure : $(date +%H:%M:%S) πŸš€ Statut : mise Γ  jour en cours" # ------------------------------------------------ # Γ‰TAPE 1 β€” Mise Γ  jour du systΓ¨me # ------------------------------------------------ header "Mise Γ  jour du systΓ¨me" echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" echo "πŸ“¦ Mise Γ  jour du systΓ¨me" echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" echo "" "${WORKDIR}/update.sh" "${MODE}" system sleep 2 # ------------------------------------------------ # Γ‰TAPE 2 β€” Mise Γ  jour Docker # ------------------------------------------------ header "Mise Γ  jour des conteneurs Docker" echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" echo "🐳 Mise Γ  jour des conteneurs Docker" echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" echo "" "${WORKDIR}/update.sh" "${MODE}" docker # ------------------------------------------------ # Fin # ------------------------------------------------ END_TIME=$(date +%s) DURATION=$((END_TIME - START_TIME)) echo "" echo "🧾 Log run : ${RUN_LOG}" echo "πŸ—ƒοΈ Archive run : ${RUN_LOG_ARCHIVE}" echo "πŸŽ‰ TerminΓ©" SUMMARY="🧰 LXC Updater (TM) πŸ–₯️ Conteneur : $(hostname) πŸ“… Date : ${DATE} πŸ•’ Heure : $(date +%H:%M:%S) πŸ“¦ Mise Γ  jour systΓ¨me : terminΓ©e 🐳 Mise Γ  jour Docker : terminΓ©e ⏱ DurΓ©e : ${DURATION}s" send_matrix "$SUMMARY"