Utoljára aktív 1 month ago

Erreur32's Avatar Erreur32 gist felülvizsgálása 6 months ago. Revízióhoz ugrás

Nincsenek változtatások

Erreur32's Avatar Erreur32 gist felülvizsgálása 6 months ago. Revízióhoz ugrás

Nincsenek változtatások

Erreur32's Avatar Erreur32 gist felülvizsgálása 9 months ago. Revízióhoz ugrás

1 file changed, 214 insertions

check_temperature_all.sh(fájl létrehozva)

@@ -0,0 +1,214 @@
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 + # - Affiche les températures système détectées via `sensors` (lm-sensors),
8 + # NVMe et GPU (NVIDIA).
9 + # - Classe les valeurs par catégorie : CPU, Carte mère, RAM, NVMe, GPU, Autres.
10 + # - Colore les valeurs selon leur plage :
11 + # < 30°C → Bleu
12 + # 30 – 60°C → Vert
13 + # 60 – 80°C → Jaune
14 + # > 80°C → Rouge
15 + # - Pour CPU, Carte mère et NVMe, affiche aussi la température "high" (max) en gris.
16 + # - Option `--raw` : affiche la sortie brute de `sensors`.
17 + # - Option `--watch` : rafraîchit toutes les 2 secondes (équivalent à `watch -c script.sh`).
18 + #
19 + # Niveaux visuels :
20 + # 🔵 < 30°C | 🟢 30–60°C | 🟡 60–80°C | 🔴 > 80°C
21 + #
22 + # Utilisation :
23 + # ./check_temp_all.sh → Affichage normal
24 + # ./check_temp_all.sh --raw → Sortie brute
25 + # ./check_temp_all.sh --watch → Rafraîchit toutes les 2s avec couleurs
26 + #
27 + # Prérequis :
28 + # - Linux (Debian/Ubuntu/Proxmox…)
29 + # - lm-sensors installé et configuré (`sudo sensors-detect`)
30 + # - (Optionnel) nvidia-smi pour GPU NVIDIA
31 + # =========================================================
32 +
33 + set -euo pipefail
34 + LC_ALL=C
35 +
36 + # Couleurs ANSI
37 + BLUE=$'\033[1;34m'
38 + RED=$'\033[1;31m'
39 + GREEN=$'\033[1;32m'
40 + YELLOW=$'\033[1;33m'
41 + CYAN=$'\033[1;36m'
42 + GRAY=$'\033[90m'
43 + RESET=$'\033[0m'
44 + BOLD=$'\033[1m'
45 +
46 + show_help() {
47 + printf "%b\n" "${BOLD}Usage:${RESET} $0 [--raw] [--watch]"
48 + echo " --raw : Affiche la sortie brute de sensors"
49 + echo " --watch : Rafraîchit toutes les 2 secondes (équivalent à: watch -c script.sh)"
50 + echo " --help : Affiche cette aide"
51 + }
52 +
53 + print_section() {
54 + local title="$1"
55 + printf "\n%b--- %s ---%b\n" "$CYAN" "$title" "$RESET"
56 + }
57 +
58 + # Colorise un nombre (°C) selon seuils
59 + colorize_number() {
60 + local n="$1"
61 + awk -v n="$n" -v b="$BLUE" -v g="$GREEN" -v y="$YELLOW" -v r="$RED" -v reset="$RESET" 'BEGIN{
62 + c = (n < 30) ? b : (n < 60) ? g : (n < 80) ? y : r;
63 + printf "%s%.1f°C%s", c, n, reset;
64 + }'
65 + }
66 +
67 + # Extrait le premier nombre décimal trouvé depuis une chaîne
68 + first_number() {
69 + grep -Eo '[+-]?[0-9]+(\.[0-9]+)?' | head -n1 | sed -E 's/^\+?//'
70 + }
71 +
72 + # Extrait la valeur après "high ="
73 + extract_high() {
74 + local line="$1"
75 + local h
76 + h="$(echo "$line" | grep -Eo 'high[[:space:]]*=[[:space:]]*[+-]?[0-9]+(\.[0-9]+)?' | tail -n1 | awk '{print $NF}' | sed -E 's/^\+?//')"
77 + echo -n "$h"
78 + }
79 +
80 + # Affiche "Nom temp_coloree (max: …)"
81 + render_with_high() {
82 + local name="$1"
83 + local temp_num="$2"
84 + local high_num="$3"
85 + local colored
86 + colored="$(colorize_number "$temp_num")"
87 + if [[ -n "${high_num:-}" ]]; then
88 + printf "%-20s %s %b(max: %.1f°C)%b\n" "$name" "$colored" "$GRAY" "$high_num" "$RESET"
89 + else
90 + printf "%-20s %s\n" "$name" "$colored"
91 + fi
92 + }
93 +
94 + # Options
95 + RAW_MODE=false
96 + WATCH_MODE=false
97 + for arg in "$@"; do
98 + case "$arg" in
99 + --raw) RAW_MODE=true ;;
100 + --watch) WATCH_MODE=true ;;
101 + --help) show_help; exit 0 ;;
102 + *) printf "%bOption inconnue:%b %s\n" "$RED" "$RESET" "$arg"; exit 1 ;;
103 + esac
104 + done
105 +
106 + # Mode --raw
107 + if $RAW_MODE; then sensors; exit 0; fi
108 +
109 + # Mode --watch : relance le script avec watch -c
110 + if $WATCH_MODE; then
111 + exec watch -c "$0"
112 + fi
113 +
114 + collect_temps() {
115 + local sensors_out
116 + sensors_out="$(sensors 2>/dev/null || true)"
117 +
118 + printf "%b\n" "${BOLD}==== TEMPÉRATURES SYSTÈME (auto) ====${RESET}"
119 +
120 + # CPU
121 + print_section "CPU"
122 + cpu_lines="$(echo "$sensors_out" | grep -E '^(Package id [0-9]+|Core [0-9]+):' || true)"
123 + if [[ -n "${cpu_lines:-}" ]]; then
124 + while IFS= read -r line; do
125 + name="${line%%:*}"; name="${name%:}"
126 + after="${line#*:*}"
127 + temp_num="$(echo "$after" | first_number)"
128 + high_num="$(extract_high "$line")"
129 + [[ -n "${temp_num:-}" ]] && render_with_high "$name" "$temp_num" "$high_num"
130 + done <<< "$cpu_lines"
131 + else
132 + echo "(aucune donnée)"
133 + fi
134 +
135 + # Carte mère
136 + print_section "Carte mère"
137 + mb_lines="$(echo "$sensors_out" | grep -E '^(CPUTIN|SYSTIN|PECI Agent 0):' || true)"
138 + if [[ -n "${mb_lines:-}" ]]; then
139 + while IFS= read -r line; do
140 + name="${line%%:*}"
141 + after="${line#*:*}"
142 + temp_num="$(echo "$after" | first_number)"
143 + high_num="$(extract_high "$line")"
144 + [[ -n "${temp_num:-}" ]] && render_with_high "$name" "$temp_num" "$high_num"
145 + done <<< "$mb_lines"
146 + else
147 + echo "(aucune donnée)"
148 + fi
149 +
150 + # RAM
151 + print_section "RAM"
152 + ram_lines="$(echo "$sensors_out" | grep -Ei 'DIMM' || true)"
153 + if [[ -n "${ram_lines:-}" ]]; then
154 + while IFS= read -r line; do
155 + if grep -q ':' <<< "$line"; then
156 + name="${line%%:*}"
157 + after="${line#*:*}"
158 + temp_num="$(echo "$after" | first_number)"
159 + [[ -n "${temp_num:-}" ]] && render_with_high "$name" "$temp_num" ""
160 + fi
161 + done <<< "$ram_lines"
162 + else
163 + echo "(aucune donnée)"
164 + fi
165 +
166 + # NVMe
167 + print_section "NVMe"
168 + nvme_lines="$(echo "$sensors_out" | awk '
169 + /^nvme-/ {dev=$1; next}
170 + /Composite:/ && dev!="" {gsub(/^[ \t]+/,"",$0); printf dev": %s\n", $0}
171 + ' || true)"
172 + if [[ -n "${nvme_lines:-}" ]]; then
173 + while IFS= read -r line; do
174 + name="${line%%:*}"
175 + after="${line#*:*}"
176 + temp_num="$(echo "$after" | first_number)"
177 + high_num="$(extract_high "$line")"
178 + [[ -n "${temp_num:-}" ]] && render_with_high "$name" "$temp_num" "$high_num"
179 + done <<< "$nvme_lines"
180 + else
181 + echo "(aucune donnée)"
182 + fi
183 +
184 + # GPU NVIDIA
185 + print_section "GPU"
186 + if command -v nvidia-smi &>/dev/null; then
187 + nvidia-smi --query-gpu=temperature.gpu --format=csv,noheader | while read -r t; do
188 + printf -v tfmt "%.1f" "$t"
189 + render_with_high "NVIDIA GPU" "$tfmt" ""
190 + done
191 + else
192 + echo "(aucune donnée)"
193 + fi
194 +
195 + # Autres
196 + print_section "Autres"
197 + other_lines="$(echo "$sensors_out" | grep -i 'temp' | grep -Ev '^(Core|Package id|CPUTIN|SYSTIN|PECI Agent 0|DIMM|nvme-|Adapter:)' || true)"
198 + if [[ -n "${other_lines:-}" ]]; then
199 + while IFS= read -r line; do
200 + if grep -q ':' <<< "$line"; then
201 + name="${line%%:*}"
202 + after="${line#*:*}"
203 + temp_num="$(echo "$after" | first_number)"
204 + [[ -n "${temp_num:-}" ]] && render_with_high "$name" "$temp_num" ""
205 + fi
206 + done <<< "$other_lines"
207 + else
208 + echo "(aucune donnée)"
209 + fi
210 +
211 + printf "%b\n" "${BOLD}=====================================${RESET}"
212 + }
213 +
214 + collect_temps
Újabb Régebbi