Files
proxmoxscripts/bin/pve-disk-temp.sh
2026-01-21 11:03:33 +01:00

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