#!/usr/bin/env bash # ========================================================= # Nom : check_temp_all.sh # Objet : Afficher les températures système en console # # Description : # Ce script affiche les températures système détectées # automatiquement via la commande `sensors` (lm-sensors) # et, si disponible, les températures NVMe et GPU. # # - Classe les températures par catégorie : CPU, Carte mère, # RAM, NVMe, GPU, et autres capteurs. # - Affiche en couleur avec icônes pour faciliter la lecture. # - Compatible avec `--raw` pour afficher la sortie brute # de `sensors`, et `--watch` pour rafraîchissement continu. # # - Parse automatiquement `sensors` (lm-sensors) # - Regroupe par catégories : CPU, Carte mère, RAM, NVMe, GPU, Autres # - Couleurs + emojis selon niveau de chauffe # - Supporte les formats +59.0°C et +59.0 C # # Niveaux visuels (pas encore implanter): # 🔵 < 30°C | 🟢 30–60°C | 🟡 60–80°C | 🔴 > 80°C # # Utilisation : # ./check_temp_all.sh → Affichage normal # ./check_temp_all.sh --raw → Sortie brute de `sensors` # ./check_temp_all.sh --watch → Rafraîchit toutes les 2s # # Prérequis : # - Linux (Debian/Proxmox/Ubuntu/…) # - lm-sensors installé et configuré (sudo sensors-detect) # - (Optionnel) nvidia-smi pour GPU NVIDIA # ========================================================= set -euo pipefail LC_ALL=C # Couleurs RED="\033[1;31m" GREEN="\033[1;32m" YELLOW="\033[1;33m" CYAN="\033[1;36m" RESET="\033[0m" BOLD="\033[1m" show_help() { echo -e "${BOLD}Usage:${RESET} $0 [--raw] [--watch]" echo " --raw : Affiche la sortie brute de sensors" echo " --watch : Rafraîchit toutes les 2 secondes" echo " --help : Affiche cette aide" } print_section() { local title="$1" echo -e "\n${CYAN}--- $title ---${RESET}" } # Options RAW_MODE=false WATCH_MODE=false for arg in "$@"; do case "$arg" in --raw) RAW_MODE=true ;; --watch) WATCH_MODE=true ;; --help) show_help; exit 0 ;; *) echo -e "${RED}Option inconnue:${RESET} $arg"; exit 1 ;; esac done # Mode --raw if $RAW_MODE; then sensors exit 0 fi collect_temps() { local sensors_out sensors_out="$(sensors 2>/dev/null || true)" echo -e "${BOLD}==== TEMPÉRATURES SYSTÈME (auto) ====${RESET}" # CPU print_section "CPU" cpu_lines=$(echo "$sensors_out" | grep -E 'Core [0-9]+:|Package id') if [[ -n "$cpu_lines" ]]; then echo "$cpu_lines" | awk -v G="$GREEN" -v R="$RESET" '{printf "🖥️ %-15s %s%s\n", $1" "$2, G $3, R}' else echo "(aucune donnée)" fi # Carte mère / chipset print_section "Carte mère" echo "$sensors_out" | grep -E 'CPUTIN|SYSTIN|PECI Agent 0' || echo "(aucune donnée)" # RAM print_section "RAM" echo "$sensors_out" | grep -i 'DIMM' || echo "(aucune donnée)" # NVMe via sensors print_section "NVMe" echo "$sensors_out" | awk ' /^nvme-/ {dev=$1; next} /Composite/ { gsub(/\+|°C|C|,/,"",$2) printf "💾 %s : \033[1;32m%s°C\033[0m\n", dev, $2 } ' || echo "(aucune donnée)" # GPU print_section "GPU" if command -v nvidia-smi &>/dev/null; then nvidia-smi --query-gpu=temperature.gpu --format=csv,noheader | while read -r t; do echo "🎮 NVIDIA GPU : ${t}°C" done else echo "(aucune donnée)" fi # Autres capteurs print_section "Autres" echo "$sensors_out" | grep -i 'temp' | grep -Ev 'Core|Package|CPUTIN|SYSTIN|PECI|DIMM|Composite' || echo "(aucune donnée)" echo -e "${BOLD}=====================================${RESET}" } # Mode watch if $WATCH_MODE; then while true; do clear collect_temps sleep 2 done else collect_temps fi