49 lines
1.5 KiB
Bash
49 lines
1.5 KiB
Bash
#!/bin/bash
|
|
|
|
# Colori per le soglie
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
RED='\033[0;31m'
|
|
NC='\033[0m'
|
|
|
|
# Intestazione allineata
|
|
printf "%-12s %-10s %-8s %-25s\n" "DEVICE" "TYPE" "TEMP" "MODEL"
|
|
echo "------------------------------------------------------------"
|
|
|
|
# Elenca tutti i dischi fisici escludendo partizioni e device virtuali
|
|
for disk in $(lsblk -dnpo NAME | grep -vE "loop|rbd|zd"); do
|
|
|
|
# Rileva il tipo di disco
|
|
if [[ "$disk" == *"nvme"* ]]; then
|
|
type="NVMe"
|
|
# Per NVMe usiamo nvme-cli o smartctl (più universale)
|
|
temp=$(smartctl -a $disk | grep -i "Temperature:" | awk '{print $2}' | head -n 1)
|
|
else
|
|
type="SATA/SAS"
|
|
# Per SSD/HDD cerchiamo Temperature_Celsius o Airflow_Temperature
|
|
temp=$(smartctl -A $disk | grep -E "Temperature_Celsius|Airflow_Temperature_Cel" | awk '{print $10}' | head -n 1)
|
|
fi
|
|
|
|
# Se non trova la temperatura (alcuni controller RAID o dischi vecchi)
|
|
if [ -z "$temp" ]; then temp="N/A"; fi
|
|
|
|
# Estrazione modello
|
|
model=$(smartctl -i $disk | grep -i "Device Model:\|Model Number:" | cut -d: -f2 | xargs)
|
|
|
|
# Logica colori per la temperatura
|
|
if [[ "$temp" =~ ^[0-9]+$ ]]; then
|
|
if [ "$temp" -ge 60 ]; then
|
|
t_color=$RED
|
|
elif [ "$temp" -ge 45 ]; then
|
|
t_color=$YELLOW
|
|
else
|
|
t_color=$GREEN
|
|
fi
|
|
temp_out="${t_color}${temp}°C${NC}"
|
|
else
|
|
temp_out="N/A"
|
|
fi
|
|
|
|
# Stampa riga
|
|
printf "%-12s %-10s %-18b %-25s\n" "$(basename $disk)" "$type" "$temp_out" "$model"
|
|
done |