Zuletzt aktiv 1 month ago

Änderung 083fc9a3a336c0ba574cfc5cd8e1a68b18b910c1

check_temp_all.sh Originalformat
1#!/usr/bin/env bash
2# =========================================================
3# Nom : check_temp_all.sh
4# Objet : Afficher les températures système en console
5#
6# Description :
7# Ce script affiche les températures système détectées
8# automatiquement via la commande `sensors` (lm-sensors)
9# et, si disponible, les températures NVMe et GPU.
10#
11# - Classe les températures par catégorie : CPU, Carte mère,
12# RAM, NVMe, GPU, et autres capteurs.
13# - Affiche en couleur avec icônes pour faciliter la lecture.
14# - Compatible avec `--raw` pour afficher la sortie brute
15# de `sensors`, et `--watch` pour rafraîchissement continu.
16#
17# - Parse automatiquement `sensors` (lm-sensors)
18# - Regroupe par catégories : CPU, Carte mère, RAM, NVMe, GPU, Autres
19# - Couleurs + emojis selon niveau de chauffe
20# - Supporte les formats +59.0°C et +59.0 C
21#
22# Niveaux visuels (pas encore implanter):
23# 🔵 < 30°C | 🟢 30–60°C | 🟡 60–80°C | 🔴 > 80°C
24#
25# Utilisation :
26# ./check_temp_all.sh → Affichage normal
27# ./check_temp_all.sh --raw → Sortie brute de `sensors`
28# ./check_temp_all.sh --watch → Rafraîchit toutes les 2s
29#
30# Prérequis :
31# - Linux (Debian/Proxmox/Ubuntu/…)
32# - lm-sensors installé et configuré (sudo sensors-detect)
33# - (Optionnel) nvidia-smi pour GPU NVIDIA
34# =========================================================
35
36
37set -euo pipefail
38LC_ALL=C
39
40# Couleurs
41RED="\033[1;31m"
42GREEN="\033[1;32m"
43YELLOW="\033[1;33m"
44CYAN="\033[1;36m"
45RESET="\033[0m"
46BOLD="\033[1m"
47
48show_help() {
49 echo -e "${BOLD}Usage:${RESET} $0 [--raw] [--watch]"
50 echo " --raw : Affiche la sortie brute de sensors"
51 echo " --watch : Rafraîchit toutes les 2 secondes"
52 echo " --help : Affiche cette aide"
53}
54
55print_section() {
56 local title="$1"
57 echo -e "\n${CYAN}--- $title ---${RESET}"
58}
59
60# Options
61RAW_MODE=false
62WATCH_MODE=false
63for arg in "$@"; do
64 case "$arg" in
65 --raw) RAW_MODE=true ;;
66 --watch) WATCH_MODE=true ;;
67 --help) show_help; exit 0 ;;
68 *) echo -e "${RED}Option inconnue:${RESET} $arg"; exit 1 ;;
69 esac
70done
71
72# Mode --raw
73if $RAW_MODE; then
74 sensors
75 exit 0
76fi
77
78collect_temps() {
79 local sensors_out
80 sensors_out="$(sensors 2>/dev/null || true)"
81
82 echo -e "${BOLD}==== TEMPÉRATURES SYSTÈME (auto) ====${RESET}"
83
84 # CPU
85 print_section "CPU"
86 cpu_lines=$(echo "$sensors_out" | grep -E 'Core [0-9]+:|Package id')
87 if [[ -n "$cpu_lines" ]]; then
88 echo "$cpu_lines" | awk -v G="$GREEN" -v R="$RESET" '{printf "🖥️ %-15s %s%s\n", $1" "$2, G $3, R}'
89 else
90 echo "(aucune donnée)"
91 fi
92
93 # Carte mère / chipset
94 print_section "Carte mère"
95 echo "$sensors_out" | grep -E 'CPUTIN|SYSTIN|PECI Agent 0' || echo "(aucune donnée)"
96
97 # RAM
98 print_section "RAM"
99 echo "$sensors_out" | grep -i 'DIMM' || echo "(aucune donnée)"
100
101 # NVMe via sensors
102 print_section "NVMe"
103 echo "$sensors_out" | awk '
104 /^nvme-/ {dev=$1; next}
105 /Composite/ {
106 gsub(/\+|°C|C|,/,"",$2)
107 printf "💾 %s : \033[1;32m%s°C\033[0m\n", dev, $2
108 }
109 ' || echo "(aucune donnée)"
110
111 # GPU
112 print_section "GPU"
113 if command -v nvidia-smi &>/dev/null; then
114 nvidia-smi --query-gpu=temperature.gpu --format=csv,noheader | while read -r t; do
115 echo "🎮 NVIDIA GPU : ${t}°C"
116 done
117 else
118 echo "(aucune donnée)"
119 fi
120
121 # Autres capteurs
122 print_section "Autres"
123 echo "$sensors_out" | grep -i 'temp' | grep -Ev 'Core|Package|CPUTIN|SYSTIN|PECI|DIMM|Composite' || echo "(aucune donnée)"
124
125 echo -e "${BOLD}=====================================${RESET}"
126}
127
128# Mode watch
129if $WATCH_MODE; then
130 while true; do
131 clear
132 collect_temps
133 sleep 2
134 done
135else
136 collect_temps
137fi
138