#!/bin/bash

# Colores
GREEN='\033[0;32m'
RED='\033[0;31m'
YELLOW='\033[1;33m'
CYAN='\033[0;36m'
NC='\033[0m'

echo -e "${CYAN}=== Reporte de Salud Estilo HD-Sentinel ===${NC}"
echo "-------------------------------------------"

# Obtener discos físicos
DISKS=$(lsblk -dno NAME | grep -E '^sd|^nvme')

for DISK in $DISKS; do
    DEVICE="/dev/$DISK"
    
    # Obtener el modelo
    MODEL=$(sudo smartctl -i $DEVICE | grep -E "Device Model|Model Number" | cut -d: -f2 | xargs)
    [ -z "$MODEL" ] && MODEL="Desconocido"

    # --- NUEVO: Obtener Etiquetas (LABELs) de las particiones ---
    # Concatenamos todas las etiquetas encontradas en el disco (ej: "Datos, Backup")
    LABELS=$(lsblk -no LABEL $DEVICE | grep . | xargs | sed 's/ /, /g')
    [ -z "$LABELS" ] && LABELS="Sin etiqueta"

    echo -e "Disco: ${YELLOW}$DEVICE${NC} ($MODEL)"
    echo -e "Label: ${CYAN}$LABELS${NC}"

    # 1. Extraer Porcentaje de Salud
    if [[ $DISK == nvme* ]]; then
        USED=$(sudo smartctl -A $DEVICE | grep "Percentage Used" | awk '{print $3}' | tr -d '%')
        HEALTH=$((100 - 10#$USED))
    else
        HEALTH_RAW=$(sudo smartctl -A $DEVICE | grep -E "Life_Curve_Status|Wear_Leveling_Count|Percent_Lifetime_Remain" | awk '{print $4}' | head -n 1)
        
        if [ -z "$HEALTH_RAW" ]; then
            # Si es HDD mecánico
            REALLOC=$(sudo smartctl -A $DEVICE | grep "Reallocated_Sector_Ct" | awk '{print $10}' | head -n 1)
            if [ -z "$REALLOC" ] || [ "$REALLOC" -eq 0 ]; then HEALTH=100; else HEALTH=95; fi
        else
            HEALTH=$(echo $HEALTH_RAW | tr -d '%')
            HEALTH=$((10#$HEALTH))
        fi
    fi

    # 2. Definir Color según Salud
    COLOR=$GREEN
    if [ "$HEALTH" -lt 80 ]; then COLOR=$YELLOW; fi
    if [ "$HEALTH" -lt 50 ]; then COLOR=$RED; fi

    echo -e "Salud: ${COLOR}${HEALTH}%${NC}"

    # 3. Estado General y Temperatura
    STATUS=$(sudo smartctl -H $DEVICE | grep -iE "test result|overall-health" | cut -d: -f2 | xargs)
    TEMP=$(sudo smartctl -A $DEVICE | grep -iE "Temperature|Airflow_Temperature" | awk '{print $10}' | head -n 1)
    
    echo "Estado: $STATUS"
    [[ ! -z "$TEMP" ]] && echo "Temp: ${TEMP}°C"
    echo "-------------------------------------------"
done
