#!/bin/bash # IRIDE — verifica post-install / post-update (Tecnotel Servizi SRL) # Uso: iride-health (copiato in /usr/local/bin dal web installer; exit 1 se qualcosa non va) set -uo pipefail RED='\033[0;31m'; GREEN='\033[0;32m'; YELLOW='\033[1;33m'; NC='\033[0m' ok=0; ko=0 pass() { echo -e " ${GREEN}✔${NC} $1"; ok=$((ok+1)); } fail() { echo -e " ${RED}✘${NC} $1"; ko=$((ko+1)); } echo "IRIDE health check" for svc in iride-api iride-worker iride-scheduler; do systemctl is-active --quiet "$svc" && pass "$svc attivo" || fail "$svc non attivo (journalctl -u $svc -n 50)" done systemctl is-active --quiet nginx && pass "nginx attivo" || fail "nginx non attivo" nginx -t >/dev/null 2>&1 && pass "configurazione nginx valida" || fail "nginx -t fallito" for i in 1 2 3 4 5; do HEALTH="$(curl -fsS http://127.0.0.1:8080/api/health 2>/dev/null)" && break sleep 2 done if [[ -n "${HEALTH:-}" ]]; then pass "API: $(echo "$HEALTH" | python3 -c 'import json,sys; d=json.load(sys.stdin); print("versione", d["version"], "| schema", d["schema_version"], "| job", d["jobs"])' 2>/dev/null)" else fail "API non risponde su http://127.0.0.1:8080/api/health" fi [[ -f /opt/iride/data/iride.db ]] && pass "database presente" || fail "database assente in /opt/iride/data" PERM="$(stat -c '%a %U' /opt/iride/config/iride.json 2>/dev/null)" [[ "$PERM" == "600 iride" ]] && pass "config 0600 iride" || fail "permessi config: ${PERM:-assente} (atteso 600 iride)" FREE_GB=$(df -BG --output=avail /opt/iride | tail -1 | tr -dc '0-9') [[ "${FREE_GB:-0}" -ge 5 ]] && pass "spazio disco: ${FREE_GB} GB liberi" || echo -e " ${YELLOW}!${NC} spazio disco basso: ${FREE_GB:-?} GB" echo " $ok ok, $ko errori" [[ $ko -eq 0 ]]