From 4c559f7791bddb379af237fe28833fbb23b04136 Mon Sep 17 00:00:00 2001 From: Gmer4Lfe Date: Sat, 23 May 2026 09:58:19 -0400 Subject: [PATCH] =?UTF-8?q?fix(log/echo):=20log=20=E2=86=92=20info=20for?= =?UTF-8?q?=20section-level=20status=20across=204=20scripts?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit lidarr_cleanup, sonarr_cleanup, radarr_cleanup: container health result, safety layer 1 pass, import scan queued/complete, API query, found N items, in-memory map built, item|tracked count, tracked% safety check, first-run baseline, root/orphan-age config, empty folder cleanup start/done cert_monitor: domains to check count, warn/crit threshold display Per-item loop lines (Fetching N/M, Still scanning..., OK per-domain) remain as log() — verbose only. --- Media/lidarr_cleanup.sh | 34 +++++++++++++++++----------------- Media/radarr_cleanup.sh | 28 ++++++++++++++-------------- Media/sonarr_cleanup.sh | 28 ++++++++++++++-------------- Monitors/cert_monitor.sh | 6 +++--- 4 files changed, 48 insertions(+), 48 deletions(-) diff --git a/Media/lidarr_cleanup.sh b/Media/lidarr_cleanup.sh index 4fde635..4b93a87 100644 --- a/Media/lidarr_cleanup.sh +++ b/Media/lidarr_cleanup.sh @@ -172,7 +172,7 @@ detect_hosts # Skip if Lidarr is not configured on this host if [[ -z "${LIDARR_URL:-}" ]] || [[ -z "${LIDARR_API_KEY:-}" ]]; then - log "Lidarr not configured on $MY_ID ($LOCAL_SERVER_NAME) — skipping" + info "Lidarr not configured on $MY_ID ($LOCAL_SERVER_NAME) — skipping" exit 0 fi @@ -243,8 +243,8 @@ fi CONTAINER_HEALTH=$(timeout "$DOCKER_TIMEOUT" docker inspect -f \ '{{.State.Health.Status}}' "$LIDARR_CONTAINER" 2>/dev/null) case "$CONTAINER_HEALTH" in - healthy) log "$LIDARR_CONTAINER is healthy" ;; - "") log "$LIDARR_CONTAINER has no health check — proceeding" ;; + healthy) info "$LIDARR_CONTAINER is healthy" ;; + "") info "$LIDARR_CONTAINER has no health check — proceeding" ;; starting) error "$LIDARR_CONTAINER is still starting — aborting" notify "Lidarr cleanup aborted on $(hostname) — container still starting" \ @@ -258,7 +258,7 @@ case "$CONTAINER_HEALTH" in *) warn "$LIDARR_CONTAINER health: $CONTAINER_HEALTH — proceeding with caution" ;; esac -log "Safety layer 1 passed — container healthy" +info "Safety layer 1 passed — container healthy" # ============================================================================================== # ── HELPER FUNCTIONS ────────────────────────────────────────────────────────────────────────── @@ -326,10 +326,10 @@ done unset _cp if [[ -n "$LIDARR_CONTAINER_ROOT" ]]; then - log "Triggering DownloadedAlbumsScan on: $LIDARR_CONTAINER_ROOT" + info "Triggering DownloadedAlbumsScan on: $LIDARR_CONTAINER_ROOT" SCAN_PAYLOAD="{\"name\": \"DownloadedAlbumsScan\", \"path\": \"$LIDARR_CONTAINER_ROOT\"}" else - log "No path map match — triggering DownloadedAlbumsScan (all root folders)" + info "No path map match — triggering DownloadedAlbumsScan (all root folders)" SCAN_PAYLOAD='{"name": "DownloadedAlbumsScan"}' fi @@ -344,7 +344,7 @@ SCAN_CMD_ID=$(echo "$SCAN_RESPONSE" | jq -r '.id // empty' 2>/dev/null) if [[ -z "$SCAN_CMD_ID" ]]; then warn "Could not trigger import scan — proceeding without pre-flight" else - log " Import scan queued (command ID: $SCAN_CMD_ID) — waiting for completion..." + info "Import scan queued (command ID: $SCAN_CMD_ID) — waiting for completion..." POLL_TIMEOUT=${LIDARR_IMPORT_SCAN_TIMEOUT:-600} POLLED=0 while [[ "$POLLED" -lt "$POLL_TIMEOUT" ]]; do @@ -353,7 +353,7 @@ else "${LIDARR_URL}/api/v1/command/${SCAN_CMD_ID}" 2>/dev/null | \ jq -r '.status // empty' 2>/dev/null) case "$SCAN_STATUS" in - completed) log "Import scan complete ✅"; break ;; + completed) info "Import scan complete ✅"; break ;; failed) warn "Import scan reported failed — proceeding anyway"; break ;; esac sleep 10 @@ -379,7 +379,7 @@ fi # Safety Layer 3 — API version check check_arr_version "$LIDARR_URL" "$LIDARR_API_KEY" "v1" "$LIDARR_VERSION_MAJOR" "Lidarr" || exit 1 -log " Querying Lidarr API..." +info "Querying Lidarr API..." # Fetch all artists ARTIST_RESPONSE=$(lidarr_api "artist") || { @@ -400,7 +400,7 @@ if [[ "$ARTIST_COUNT" -eq 0 ]]; then exit 1 fi -log "Found $ARTIST_COUNT artists — fetching track files..." +info "Found $ARTIST_COUNT artists — fetching track files..." TMP_DIR="/tmp/lidarr_cleanup_$$" mkdir -p "$TMP_DIR" @@ -429,7 +429,7 @@ while IFS= read -r _tracked_path; do [[ -n "$_tracked_path" ]] && TRACKED_MAP["$_tracked_path"]=1 done < "$TRACKED_FILE" unset _tracked_path -log "Built in-memory lookup map: ${#TRACKED_MAP[@]} tracked paths" +info "Built in-memory lookup map: ${#TRACKED_MAP[@]} tracked paths" TRACKED_COUNT=$(wc -l < "$TRACKED_FILE") # Safety Layer 5 — tracked count > 0 @@ -440,7 +440,7 @@ if [[ "$TRACKED_COUNT" -eq 0 ]]; then exit 1 fi -log " $ARTIST_COUNT artists | $TRACKED_COUNT tracked files" +info "$ARTIST_COUNT artists | $TRACKED_COUNT tracked files" # Safety Layer 6 — percentage drop vs last known count if [[ -f "$LIDARR_TRACKED_COUNT_FILE" ]]; then @@ -455,10 +455,10 @@ if [[ -f "$LIDARR_TRACKED_COUNT_FILE" ]]; then "Lidarr Cleanup" "warning" exit 1 fi - log "Tracked count: ${PCT}% of last run ($TRACKED_COUNT vs $LAST_COUNT) ✅" + info "Tracked count: ${PCT}% of last run ($TRACKED_COUNT vs $LAST_COUNT) ✅" fi else - log "No previous count on record — first run, saving baseline" + info "No previous count on record — first run, saving baseline" fi echo "$TRACKED_COUNT" > "$LIDARR_TRACKED_COUNT_FILE" @@ -468,7 +468,7 @@ echo "$TRACKED_COUNT" > "$LIDARR_TRACKED_COUNT_FILE" # ============================================================================================== echo "" echo "━━━ $ICON_CLEAN Scanning Music Root ━━━" -log " Root: $LIDARR_MUSIC_ROOT | Orphan age: ${LIDARR_ORPHAN_AGE} days" +info "Root: $LIDARR_MUSIC_ROOT | Orphan age: ${LIDARR_ORPHAN_AGE} days" START=$(date +%s) ORPHAN_COUNT=0 @@ -563,9 +563,9 @@ if [[ "$DRY_RUN" == false ]]; then done < <(find "$LIDARR_MUSIC_ROOT" -type f 2>/dev/null) - log "Cleaning up empty folders..." + info "Cleaning up empty folders..." find "$LIDARR_MUSIC_ROOT" -mindepth 1 -type d -empty -delete 2>/dev/null - log "Empty folders removed" + info "Empty folders removed" fi END=$(date +%s) diff --git a/Media/radarr_cleanup.sh b/Media/radarr_cleanup.sh index 55a2fac..1ba54d3 100644 --- a/Media/radarr_cleanup.sh +++ b/Media/radarr_cleanup.sh @@ -222,8 +222,8 @@ fi CONTAINER_HEALTH=$(timeout "$DOCKER_TIMEOUT" docker inspect -f \ '{{.State.Health.Status}}' "$RADARR_CONTAINER" 2>/dev/null) case "$CONTAINER_HEALTH" in - healthy) log "$RADARR_CONTAINER is healthy" ;; - "") log "$RADARR_CONTAINER has no health check — proceeding" ;; + healthy) info "$RADARR_CONTAINER is healthy" ;; + "") info "$RADARR_CONTAINER has no health check — proceeding" ;; starting) error "$RADARR_CONTAINER is still starting — aborting" notify "Radarr cleanup aborted on $(hostname) — container still starting" \ @@ -237,7 +237,7 @@ case "$CONTAINER_HEALTH" in *) warn "$RADARR_CONTAINER health: $CONTAINER_HEALTH — proceeding with caution" ;; esac -log "Safety layer 1 passed — container healthy" +info "Safety layer 1 passed — container healthy" # ============================================================================================== # ── HELPER FUNCTIONS ────────────────────────────────────────────────────────────────────────── @@ -312,10 +312,10 @@ done unset _cp if [[ -n "$RADARR_CONTAINER_ROOT" ]]; then - log "Triggering DownloadedMoviesScan on: $RADARR_CONTAINER_ROOT" + info "Triggering DownloadedMoviesScan on: $RADARR_CONTAINER_ROOT" SCAN_PAYLOAD="{\"name\": \"DownloadedMoviesScan\", \"path\": \"$RADARR_CONTAINER_ROOT\"}" else - log "No path map match — triggering DownloadedMoviesScan (all root folders)" + info "No path map match — triggering DownloadedMoviesScan (all root folders)" SCAN_PAYLOAD='{"name": "DownloadedMoviesScan"}' fi @@ -330,7 +330,7 @@ SCAN_CMD_ID=$(echo "$SCAN_RESPONSE" | jq -r '.id // empty' 2>/dev/null) if [[ -z "$SCAN_CMD_ID" ]]; then warn "Could not trigger import scan — proceeding without pre-flight" else - log " Import scan queued (command ID: $SCAN_CMD_ID) — waiting for completion..." + info "Import scan queued (command ID: $SCAN_CMD_ID) — waiting for completion..." POLL_TIMEOUT=${RADARR_IMPORT_SCAN_TIMEOUT:-600} POLLED=0 while [[ "$POLLED" -lt "$POLL_TIMEOUT" ]]; do @@ -339,7 +339,7 @@ else "${RADARR_URL}/api/v3/command/${SCAN_CMD_ID}" 2>/dev/null | \ jq -r '.status // empty' 2>/dev/null) case "$SCAN_STATUS" in - completed) log "Import scan complete ✅"; break ;; + completed) info "Import scan complete ✅"; break ;; failed) warn "Import scan reported failed — proceeding anyway"; break ;; esac sleep 10 @@ -365,7 +365,7 @@ fi # Safety Layer 3 — API version check check_arr_version "$RADARR_URL" "$RADARR_API_KEY" "v3" "$RADARR_VERSION_MAJOR" "Radarr" || exit 1 -log " Querying Radarr API..." +info "Querying Radarr API..." # Fetch all movies MOVIES_RESPONSE=$(radarr_api "movie") || { @@ -386,7 +386,7 @@ if [[ "$MOVIE_COUNT" -eq 0 ]]; then exit 1 fi -log "Found $MOVIE_COUNT movies — fetching movie files..." +info "Found $MOVIE_COUNT movies — fetching movie files..." TMP_DIR="/tmp/radarr_cleanup_$$" mkdir -p "$TMP_DIR" @@ -419,7 +419,7 @@ while IFS= read -r _tracked_path; do [[ -n "$_tracked_path" ]] && TRACKED_MAP["$_tracked_path"]=1 done < "$TRACKED_FILE" unset _tracked_path -log "Built in-memory lookup map: ${#TRACKED_MAP[@]} tracked paths" +info "Built in-memory lookup map: ${#TRACKED_MAP[@]} tracked paths" TRACKED_COUNT=$(wc -l < "$TRACKED_FILE") # Safety Layer 5 — tracked count > 0 @@ -430,14 +430,14 @@ if [[ "$TRACKED_COUNT" -eq 0 ]]; then exit 1 fi -log " $MOVIE_COUNT movies | $TRACKED_COUNT tracked movie files" +info "$MOVIE_COUNT movies | $TRACKED_COUNT tracked movie files" # ============================================================================================== # ━━━ Scan Movies Root ━━━ # ============================================================================================== echo "" echo "━━━ $ICON_CLEAN Scanning Movies Root ━━━" -log " Root: $RADARR_MOVIES_ROOT | Orphan age: ${RADARR_ORPHAN_AGE} days" +info "Root: $RADARR_MOVIES_ROOT | Orphan age: ${RADARR_ORPHAN_AGE} days" START=$(date +%s) ORPHAN_COUNT=0 @@ -537,12 +537,12 @@ if [[ "$DRY_RUN" == false ]]; then done | sort -u ) - log "Cleaning up empty folders..." + info "Cleaning up empty folders..." for host_path in "${ARR_PATH_MAP[@]}" "$RADARR_MOVIES_ROOT"; do [[ -d "$host_path" ]] && \ find "$host_path" -mindepth 1 -type d -empty -delete 2>/dev/null done - log "Empty folders removed" + info "Empty folders removed" fi END=$(date +%s) diff --git a/Media/sonarr_cleanup.sh b/Media/sonarr_cleanup.sh index c91ac40..f41fc2b 100644 --- a/Media/sonarr_cleanup.sh +++ b/Media/sonarr_cleanup.sh @@ -222,8 +222,8 @@ fi CONTAINER_HEALTH=$(timeout "$DOCKER_TIMEOUT" docker inspect -f \ '{{.State.Health.Status}}' "$SONARR_CONTAINER" 2>/dev/null) case "$CONTAINER_HEALTH" in - healthy) log "$SONARR_CONTAINER is healthy" ;; - "") log "$SONARR_CONTAINER has no health check — proceeding" ;; + healthy) info "$SONARR_CONTAINER is healthy" ;; + "") info "$SONARR_CONTAINER has no health check — proceeding" ;; starting) error "$SONARR_CONTAINER is still starting — aborting" notify "Sonarr cleanup aborted on $(hostname) — container still starting" \ @@ -237,7 +237,7 @@ case "$CONTAINER_HEALTH" in *) warn "$SONARR_CONTAINER health: $CONTAINER_HEALTH — proceeding with caution" ;; esac -log "Safety layer 1 passed — container healthy" +info "Safety layer 1 passed — container healthy" # ============================================================================================== # ── HELPER FUNCTIONS ────────────────────────────────────────────────────────────────────────── @@ -312,10 +312,10 @@ done unset _cp if [[ -n "$SONARR_CONTAINER_ROOT" ]]; then - log "Triggering DownloadedEpisodesScan on: $SONARR_CONTAINER_ROOT" + info "Triggering DownloadedEpisodesScan on: $SONARR_CONTAINER_ROOT" SCAN_PAYLOAD="{\"name\": \"DownloadedEpisodesScan\", \"path\": \"$SONARR_CONTAINER_ROOT\"}" else - log "No path map match — triggering DownloadedEpisodesScan (all root folders)" + info "No path map match — triggering DownloadedEpisodesScan (all root folders)" SCAN_PAYLOAD='{"name": "DownloadedEpisodesScan"}' fi @@ -330,7 +330,7 @@ SCAN_CMD_ID=$(echo "$SCAN_RESPONSE" | jq -r '.id // empty' 2>/dev/null) if [[ -z "$SCAN_CMD_ID" ]]; then warn "Could not trigger import scan — proceeding without pre-flight" else - log " Import scan queued (command ID: $SCAN_CMD_ID) — waiting for completion..." + info "Import scan queued (command ID: $SCAN_CMD_ID) — waiting for completion..." POLL_TIMEOUT=${SONARR_IMPORT_SCAN_TIMEOUT:-600} POLLED=0 while [[ "$POLLED" -lt "$POLL_TIMEOUT" ]]; do @@ -339,7 +339,7 @@ else "${SONARR_URL}/api/v3/command/${SCAN_CMD_ID}" 2>/dev/null | \ jq -r '.status // empty' 2>/dev/null) case "$SCAN_STATUS" in - completed) log "Import scan complete ✅"; break ;; + completed) info "Import scan complete ✅"; break ;; failed) warn "Import scan reported failed — proceeding anyway"; break ;; esac sleep 10 @@ -365,7 +365,7 @@ fi # Safety Layer 3 — API version check check_arr_version "$SONARR_URL" "$SONARR_API_KEY" "v3" "$SONARR_VERSION_MAJOR" "Sonarr" || exit 1 -log " Querying Sonarr API..." +info "Querying Sonarr API..." # Fetch all series SERIES_RESPONSE=$(sonarr_api "series") || { @@ -386,7 +386,7 @@ if [[ "$SERIES_COUNT" -eq 0 ]]; then exit 1 fi -log "Found $SERIES_COUNT series — fetching episode files..." +info "Found $SERIES_COUNT series — fetching episode files..." TMP_DIR="/tmp/sonarr_cleanup_$$" mkdir -p "$TMP_DIR" @@ -418,7 +418,7 @@ while IFS= read -r _tracked_path; do [[ -n "$_tracked_path" ]] && TRACKED_MAP["$_tracked_path"]=1 done < "$TRACKED_FILE" unset _tracked_path -log "Built in-memory lookup map: ${#TRACKED_MAP[@]} tracked paths" +info "Built in-memory lookup map: ${#TRACKED_MAP[@]} tracked paths" TRACKED_COUNT=$(wc -l < "$TRACKED_FILE") # Safety Layer 5 — tracked count > 0 @@ -429,14 +429,14 @@ if [[ "$TRACKED_COUNT" -eq 0 ]]; then exit 1 fi -log " $SERIES_COUNT series | $TRACKED_COUNT tracked episode files" +info "$SERIES_COUNT series | $TRACKED_COUNT tracked episode files" # ============================================================================================== # ━━━ Scan TV Root ━━━ # ============================================================================================== echo "" echo "━━━ $ICON_CLEAN Scanning TV Root ━━━" -log " Root: $SONARR_TV_ROOT | Orphan age: ${SONARR_ORPHAN_AGE} days" +info "Root: $SONARR_TV_ROOT | Orphan age: ${SONARR_ORPHAN_AGE} days" START=$(date +%s) ORPHAN_COUNT=0 @@ -536,12 +536,12 @@ if [[ "$DRY_RUN" == false ]]; then done | sort -u ) - log "Cleaning up empty folders..." + info "Cleaning up empty folders..." for host_path in "${ARR_PATH_MAP[@]}" "$SONARR_TV_ROOT"; do [[ -d "$host_path" ]] && \ find "$host_path" -mindepth 1 -type d -empty -delete 2>/dev/null done - log "Empty folders removed" + info "Empty folders removed" fi END=$(date +%s) diff --git a/Monitors/cert_monitor.sh b/Monitors/cert_monitor.sh index 340cef3..3f01908 100644 --- a/Monitors/cert_monitor.sh +++ b/Monitors/cert_monitor.sh @@ -127,7 +127,7 @@ if [[ ${#CERT_MONITOR_DOMAINS[@]} -eq 0 ]]; then exit 0 fi -log "Domains to check: ${#CERT_MONITOR_DOMAINS[@]}" +info "Domains to check: ${#CERT_MONITOR_DOMAINS[@]}" [[ "$DRY_RUN" == true ]] && warn "DRY RUN — results shown but no notifications sent" @@ -203,8 +203,8 @@ check_cert() { echo "" echo "━━━ $ICON_CERT Certificate Monitor — $(date '+%Y-%m-%d %H:%M:%S') ━━━" echo "$ICON_HOST $MY_ID ($LOCAL_SERVER_NAME)" -log "Warn threshold: ${CERT_WARN_DAYS} days" -log "Crit threshold: ${CERT_CRIT_DAYS} days" +info "Warn threshold: ${CERT_WARN_DAYS} days" +info "Crit threshold: ${CERT_CRIT_DAYS} days" echo "" START=$(date +%s)