check_temp_all.sh
· 3.8 KiB · Bash
Неформатований
#!/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
| 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 | |
| 37 | set -euo pipefail |
| 38 | LC_ALL=C |
| 39 | |
| 40 | # Couleurs |
| 41 | RED="\033[1;31m" |
| 42 | GREEN="\033[1;32m" |
| 43 | YELLOW="\033[1;33m" |
| 44 | CYAN="\033[1;36m" |
| 45 | RESET="\033[0m" |
| 46 | BOLD="\033[1m" |
| 47 | |
| 48 | show_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 | |
| 55 | print_section() { |
| 56 | local title="$1" |
| 57 | echo -e "\n${CYAN}--- $title ---${RESET}" |
| 58 | } |
| 59 | |
| 60 | # Options |
| 61 | RAW_MODE=false |
| 62 | WATCH_MODE=false |
| 63 | for 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 |
| 70 | done |
| 71 | |
| 72 | # Mode --raw |
| 73 | if $RAW_MODE; then |
| 74 | sensors |
| 75 | exit 0 |
| 76 | fi |
| 77 | |
| 78 | collect_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 |
| 129 | if $WATCH_MODE; then |
| 130 | while true; do |
| 131 | clear |
| 132 | collect_temps |
| 133 | sleep 2 |
| 134 | done |
| 135 | else |
| 136 | collect_temps |
| 137 | fi |
| 138 |