đđȘ«Onduleur 'Eaton Protection Station 800 USB'
Onduleur âEaton Protection Station 800 USBâ sur serveur Debian pour protĂ©ger des Ă©quipements de coupure de courant et/ou de surtension pouvant intervenir lorsque les appareils sont en fonctionnement.
Onduleur Eaton Protection Station 800 USB
Matériel
| No | Eaton Protection Station - 650/800 |
|---|---|
| 7 | 4 prises filtrées. |
| 8 | 4 prises secourues par batterie. |
| 9 | Voyant allumé, protection anti-surtensions active sur les 8 prises. |
| 10 | Voyant allumĂ©, dĂ©faut de lâAlimentation Sans Interruption. |
| 11 | Bouton de mise en service ou dâarrĂȘt des prises secourues. |
| 12 | Disjoncteur de protection. |
Network UPS Tools (NUT)
Nut (Network UPS Tools) est un logiciel Linux de surveillance des onduleurs. Il est disponible sur la majoritĂ© des distributions et permet notamment, pour les onduleurs le supportant, dâautomatiquement Ă©teindre proprement un serveur lorsque la batterie de lâonduleur arrive Ă terme. Nous allons voir lâinstallation sur Debian.
NUT est un ensemble dâoutils permettant de monitorer un systĂšme reliĂ© Ă un ou des onduleurs.Il se compose de plusieurs Ă©lĂ©ments :
- le démon nut lancé au démarrage du systÚme
- le dĂ©mon upsd qui permet dâinterroger lâonduleur, il est lancĂ© sur le PC reliĂ© Ă lâonduleur
- le dĂ©mon upsmon qui permet de monitorer et lancer les commandes nĂ©cessaires sur le rĂ©seau ondulĂ© (arrĂȘt de machines âŠ)
- diffĂ©rents programmes pour envoyer des commandes manuellement Ă lâonduleur : upsc, upsdrvctl âŠ
upsd peut communiquer avec plusieurs onduleurs si nécessaire.
upsmon interroge à intervalle régulier la machine du réseau sur laquelle est lancée upsd.
Installer NUT et branchement
Installez nut (et son éventuel besoin de dépendances) :
1
2
sudo apt update
sudo apt install nut -y
Connecter un cĂąble USB-B entre lâonduleur et un port USB du serveur.
Relever le périphérique :
1
lsusb
Exemple :
1
Bus 003 Device 002: ID 0463:ffff MGE UPS Systems UPS
Vérifier que le fichier appartient bien au groupe attendu (root: nut selon le systÚme) :
1
ls -l /dev/bus/usb/003/002
Résultat
1
crw-rw-r-- 1 root nut 189, 257 21 juil. 20:03 /dev/bus/usb/003/002
Détection + pilote : ups.conf
Le fichier /etc/nut/ups.conf dĂ©termine le driver et le port utilisĂ©s pour atteindre lâonduleur.
Le fichier /usr/share/nut/driver.list contient une liste dâonduleurs et le driver quâil faut utiliser.
On peut aussi tester la commande nut-scanner -U :
1
sudo nut-scanner -U
Résultat
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Cannot load SNMP library (libnetsnmp.so.40) : file not found. SNMP search disabled.
Cannot load XML library (libneon.so.27) : file not found. XML search disabled.
Cannot load IPMI library (libfreeipmi.so.17) : file not found. IPMI search disabled.
Scanning USB bus.
[nutdev1]
driver = "usbhid-ups"
port = "auto"
vendorid = "0463"
productid = "FFFF"
product = "Protection Station"
serial = "AN2E49008"
vendor = "EATON"
bus = "003"
device = "002"
busport = "002"
###NOTMATCHED-YET###bcdDevice = "0100"
Si le driver usbhid-ups est dĂ©tectĂ©, on lâutilise. Exemple de configuration :
1
sudo nano /etc/nut/ups.conf
Ajouter ce bloc en fin de fichier :
1
2
3
4
5
6
[eaton]
driver = usbhid-ups
port = auto
vendorid = 0463
productid = FFFF
desc = "Onduleur Eaton Protection Station 800"
Modifier nut-driver@eaton.service
CrĂ©er un lien pour lâexĂ©cutable upscmd
1
sudo ln -s /usr/bin/upscmd /usr/sbin/upscmd
Modifier le service
1
sudo systemctl edit --full nut-driver@eaton.service
Ensuite, remplace le contenu par une version propre
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[Unit]
Description=Network UPS Tools - device driver for %I
After=local-fs.target
PartOf=nut-driver.target
[Service]
Environment=NUT_IGNORE_NOWAIT=true
EnvironmentFile=-/etc/nut/nut.conf
SyslogIdentifier=%N
ExecStartPre=-/usr/bin/systemd-tmpfiles --create /usr/lib/tmpfiles.d/nut-common-tmpfiles.conf
ExecStart=/bin/sh -c 'NUTDEV="`/usr/libexec/nut-driver-enumerator.sh --get-device-for-service %i`" && [ -n "$NUTDEV" ] || { echo "FATAL: Could not find a NUT device section for service unit %i" >&2 ; exit 1 ; } ; exec /usr/sbin/upscmd'
ExecReload=/bin/kill -USR1 $MAINPID
ExecStop=/bin/sh -c 'NUTDEV="`/usr/libexec/nut-driver-enumerator.sh --get-device-for-service %i`" && [ -n "$NUTDEV" ] || { echo "FATAL: Could not find a NUT device section for service unit %i" >&2 ; exit 1 ; } ; /usr/sbin/upsdrvctl stop'
StartLimitInterval=0
Restart=always
RestartSec=15s
Type=forking
[Install]
WantedBy=nut-driver.target
Mais attention : en faisant un âfull, tu remplaces aussi tout le contenu maintenu par le paquet. Câest plus fragile aux mises Ă jour quâun simple override.
1
2
sudo systemctl daemon-reload
sudo systemctl restart nut-driver@eaton.service
Configuration daemon
Lancement via un service (nut.conf)
Le fichier /etc/nut/nut.conf dĂ©termine le comportement du dĂ©mon NUT. On utilise standalone car lâonduleur est reliĂ© Ă la machine actuelle.
1
sudo nano /etc/nut/nut.conf
Mettre :
1
MODE=standalone
Activer et démarrer :
1
sudo systemctl enable nut-server --now
Vérification :
1
systemctl status nut-server --no-pager
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
â nut-server.service - Network UPS Tools - power devices information server
Loaded: loaded (/usr/lib/systemd/system/nut-server.service; enabled; preset: enabled)
Active: active (running) since Tue 2026-07-21 20:07:52 CEST; 14s ago
Invocation: 631dc89a47014e92bef07621defc738c
Process: 334424 ExecStartPre=/usr/bin/systemd-tmpfiles --create /usr/lib/tmpfiles.d/nut-common-tmpfiles.conf (code=exited, status=0/SUCCESS)
Main PID: 334445 (upsd)
Tasks: 1 (limit: 38029)
Memory: 524K (peak: 1.8M)
CPU: 29ms
CGroup: /system.slice/nut-server.service
ââ334445 /lib/nut/upsd -F
juil. 21 20:07:52 alder nut-server[334445]: Found 1 UPS defined in ups.conf
juil. 21 20:07:52 alder nut-server[334445]: Running as foreground process, not saving a PID file
juil. 21 20:07:52 alder nut-server[334445]: upsnotify: notify about state 2 with libsystemd: was requesâŠout it
juil. 21 20:07:52 alder nut-server[334445]: upsnotify: failed to notify about state 2: no notification âŠout it
juil. 21 20:07:52 alder nut-server[334445]: upsnotify: logged the systemd watchdog situation once, willâŠout it
juil. 21 20:07:52 alder upsd[334445]: Found 1 UPS defined in ups.conf
juil. 21 20:07:52 alder upsd[334445]: Running as foreground process, not saving a PID file
juil. 21 20:07:52 alder upsd[334445]: upsnotify: notify about state 2 with libsystemd: was requested, âŠbout it
juil. 21 20:07:52 alder upsd[334445]: upsnotify: failed to notify about state 2: no notification tech âŠbout it
juil. 21 20:07:52 alder upsd[334445]: upsnotify: logged the systemd watchdog situation once, will not âŠbout it
Hint: Some lines were ellipsized, use -l to show in full.
Test NUT (indispensable avant upsmon/upssched)
Tester que NUT voit bien lâonduleur :
1
upsc eaton@localhost
Si upsc ne rĂ©pond pas ou ne trouve rien, corriger dâabord /etc/nut/ups.conf (driver/port) avant de continuer.
Utilisateurs (upsd.users)
DĂ©finir au moins un utilisateur âmasterâ pour que les commandes dâarrĂȘt puissent fonctionner.
1
sudo nano /etc/nut/upsd.users
Exemple (Ă adapter selon tes mots de passe) :
1
2
3
4
5
6
7
8
[admin]
password = adminpass
actions = SET
instcmds = ALL
[upseaton]
password = userpass
upsmon master
Moniteur automatique (upsmon.conf)
Le fichier /etc/nut/upsmon.conf configure lâĂ©tat surveillĂ© et les commandes dâarrĂȘt.
Surveiller lâonduleur :
1
sudo nano /etc/nut/upsmon.conf
Remplacer/mettre un contenu similaire Ă :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# Surveillance de lâonduleur directement reliĂ© (master)
MONITOR eaton@localhost 1 upseaton userpass master
# Notre serveur n'a pas d'alimentation redondante
MINSUPPLIES 1
# Commande lancĂ©e pour arrĂȘter proprement le systĂšme
SHUTDOWNCMD "/sbin/shutdown -h +0"
# Intervalles dâinterrogation de upsd
POLLFREQ 5
POLLFREQALERT 5
# Temps d'attente pour la déconnexion des upsmon esclaves
HOSTSYNC 15
# Temps pendant lequel on tolĂšre l'absence (multiple de POLLFREQ)
DEADTIME 15
# Fichier d'état / déclencheur
POWERDOWNFLAG "/etc/killpower"
# OFFDURATION : mettre lâĂ©tat OFF si cela persiste
OFFDURATION 30
# Notifications en cas de changement de batterie
RBWARNTIME 43200
# Délai avant notification de perte de communication
NOCOMMWARNTIME 300
# DĂ©lai avant action dâarrĂȘt suite notification
FINALDELAY 5
# Notifications via upssched
NOTIFYCMD /usr/sbin/upssched
# ĂvĂ©nements qui doivent dĂ©clencher upssched
NOTIFYFLAG ONLINE SYSLOG+EXEC
NOTIFYFLAG ONBATT SYSLOG+EXEC
NOTIFYFLAG LOWBATT SYSLOG+EXEC
NOTIFYFLAG COMMBAD SYSLOG+EXEC
NOTIFYFLAG COMMOK SYSLOG+EXEC
NOTIFYFLAG SHUTDOWN SYSLOG+EXEC
Distributeur dâĂ©vĂšnements (upssched.conf)
Lâutilitaire upssched temporise les actions selon les Ă©vĂ©nements gĂ©nĂ©rĂ©s par upsmon.
1
sudo nano /etc/nut/upssched.conf
Exemple :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# Script appelé par upssched pour exécuter les commandes
CMDSCRIPT /usr/bin/upssched-cmd
# ---- Ajouter ce qui suit -----
# Fichiers internes upssched
PIPEFN /run/nut/upssched/upssched.pipe
LOCKFN /run/nut/upssched/upssched.lock
# Perte de communication avec lâonduleur
AT COMMBAD * EXECUTE perte-liaison
# Retour secteur : on annule un timer et on notifie
AT ONLINE * CANCEL-TIMER attente-retour-secteur
AT ONLINE * EXECUTE charge-sur-secteur
# Passage sur batterie : on attend au maximum 20 minutes
AT ONBATT * START-TIMER attente-retour-secteur 1200
AT ONBATT * EXECUTE charge-sur-batterie
# Niveau de batterie trop bas
AT LOWBATT * EXECUTE batteries-vides
# Fin de vie batterie / événement de remplacement
AT REPLBATT * EXECUTE batteries-hs
# Quand on arrive Ă lâarrĂȘt
AT SHUTDOWN * EXECUTE arret-en-cours
Prise en charge des évÚnements (script /usr/bin/upssched-cmd)
Créer le script /usr/bin/upssched-cmd :
1
sudo nano /usr/bin/upssched-cmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#! /bin/sh
. "/sharenfs/scripts/env/ntfy.env"
# Ce script doit ĂȘtre appelĂ© par upssched via la directive CMDSCRIPT.
#
# Analyse argument
#
case $1 in
"charge-sur-batterie")
sujet="L'onduleur a basculé sur les batteries"
message="L'arrĂȘt systĂšme sera demandĂ© si le secteur ne revient pas."
;;
"attente-retour-secteur")
sujet="Onduleur - Fin d'attente de retour secteur"
message="Cela fait trop longtemps que le secteur est absent... Un arrĂȘt forcĂ© est en cours !"
# Demande d'arrĂȘt forcĂ©
/sbin/upsmon -c fsd
;;
"charge-sur-secteur")
sujet="Onduleur - retour secteur"
message="L'onduleur est revenu sur secteur."
;;
"batteries-vide")
sujet="Onduleur - Batteries vides"
message="Les batteries sont vides, l'arrĂȘt est imminent."
;;
"arret-en-cours")
sujet="Onduleur - ArrĂȘt en cours du serveur"
message="Le systĂšme est en cours d'arrĂȘt."
;;
"perte-liaison")
sujet="Onduleur - Perte de liaison avec l'onduleur"
message="La communication avec l'onduleur est interrompue."
;;
"batteries-hs")
sujet="Onduleur - URGENT - batteries HS"
message="Les batteries sont Ă remplacer d'urgence."
;;
*)
sujet="Onduleur - Commande inconnue : $1"
message="Une commande inconnue a été envoyée par l'onduleur..."
;;
esac
# Envoi d'une notification
curl -sS -X POST \
-H "X-Email: $NTFY_EMAIL" \
-H "Title: $sujet" \
-H "Authorization: $NTFY_TOKEN" \
-H "Priority: high" \
-H "Tags: red_circle,warning" \
-d "$message" \
"$NTFY_URL"
Rendre le script exécutable (normalement exécutable par défaut) :
1
sudo chmod +x /usr/bin/upssched-cmd
Redémarrer et valider
Redémarrer NUT :
1
sudo systemctl restart nut-server
Vérifier que les daemons sont lancés :
1
ps auxf | grep ^nut
1
2
nut 333777 0.0 0.0 14208 2116 ? Ss 20:06 0:00 /usr/lib/nut/usbhid-ups -a eaton
nut 348948 0.0 0.0 7580 3744 ? Ss 20:42 0:00 /lib/nut/upsd -F
Onduleur connecté ?
upsc permet de sâadresser Ă un dĂ©mon upsd.
1
2
# pour lister tous les onduleurs dĂ©tectĂ©s sur host ; si lâhost nâest pas spĂ©cifiĂ©, câest localhost.
upsc -L
Liste
1
2
Init SSL without certificate database
eaton: Onduleur Eaton Protection Station 800
Liste des paramĂštres
1
upsc eaton@localhost
Pour Ă©viter lâaffichage du message âInit SSL without certificate databaseâ, ajouter
2>&1 | grep -v '^Init SSL'Ă la commande
Exemple:upsc eaton@localhost 2>&1 | grep -v '^Init SSL'
Pour afficher un paramĂštre
1
upsc eaton@localhost ups.status 2>&1 | grep -v '^Init SSL'
Définitions des codes renvoyés par ups.status
| Abrégé | Définition |
|---|---|
| OL | En ligne (pas de coupure de courant) (Ă lâopposĂ© de OB - sur batterie) |
| LB | Batterie faible |
| SD | Shutdown load, arrĂȘt en cours |
| CP | CĂąble dâalimentation |
| CTS | Clear to Send. Reçu de lâUPS. |
| RTS | Ready to Send. Envoyé par le PC. |
| DCD | DĂ©tection de porteuse de donnĂ©es. Reçu de lâUPS. |
| RNG | Ring indicateur. Reçu de lâUPS. |
| DTR | Terminal de donnĂ©es prĂȘt. EnvoyĂ© par le PC. |
| ST | Envoyer un BREAK sur la ligne de donnĂ©es dâĂ©mission |
Tester lâenvoi notification
Le plus simple est de dĂ©brancher la liaison USB entre lâonduleur et le serveur, puis de le rebrancher
Avant, il faut mettre le le journal en attente: sudo journalctl -u nut-monitor -f
Débranche le cùble USB et regarde si tu vois des lignes ONBATT, COMMBAD, et des messages liés à upssched.manpages.debian+2
Ă partir de lĂ , la chaĂźne complĂšte sera :
- UPS change dâĂ©tat â driver /
upsd. upsmonreçoit lâĂ©vĂ©nement (COMMBAD,ONBATT, etc.).NOTIFYFLAG ... EXECfait appelerNOTIFYCMD(upssched).upsschedapplique tes rĂšglesAT ... EXECUTE ...et appelle/usr/bin/upssched-cmdavec le bon argument.
Le journal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
juil. 21 21:30:05 alder systemd[1]: Starting nut-monitor.service - Network UPS Tools - power device monitor and shutdown controller...
juil. 21 21:30:06 alder systemd[1]: Started nut-monitor.service - Network UPS Tools - power device monitor and shutdown controller.
juil. 21 21:30:06 alder nut-monitor[368697]: fopen /run/nut/upsmon.pid: No such file or directory
juil. 21 21:30:06 alder nut-monitor[368697]: Could not find PID file to see if previous upsmon instance is already running!
juil. 21 21:30:06 alder nut-monitor[368697]: UPS: eaton@localhost (primary) (power value 1)
juil. 21 21:30:06 alder nut-monitor[368697]: Using power down flag file /etc/killpower
juil. 21 21:30:06 alder nut-monitor[368700]: Init SSL without certificate database
juil. 21 21:30:06 alder nut-monitor[368700]: upsnotify: notify about state 2 with libsystemd: was requested, but not running as a service unit now, will not spam more about it
juil. 21 21:30:06 alder nut-monitor[368700]: upsnotify: failed to notify about state 2: no notification tech defined, will not spam more about it
juil. 21 21:30:06 alder nut-monitor[368700]: upsnotify: logged the systemd watchdog situation once, will not spam more about it
juil. 21 21:30:31 alder nut-monitor[368700]: Poll UPS [eaton@localhost] failed - Data stale
juil. 21 21:30:31 alder nut-monitor[368700]: Communications with UPS eaton@localhost lost
juil. 21 21:30:31 alder nut-monitor[368893]: {"id":"nrna4Zx48qX2","time":1784662231,"expires":1784705431,"event":"message","topic":"yan_infos","title":"Onduleur - Perte de liaison avec l'onduleur","message":"La communication avec l'onduleur est interrompue.","priority":4,"tags":["red_circle","warning"]}
juil. 21 21:30:31 alder nut-monitor[368888]: Network UPS Tools upsmon 2.8.1
juil. 21 21:30:36 alder nut-monitor[368700]: Poll UPS [eaton@localhost] failed - Data stale
juil. 21 21:30:41 alder nut-monitor[368700]: Poll UPS [eaton@localhost] failed - Data stale
juil. 21 21:30:46 alder nut-monitor[368700]: Communications with UPS eaton@localhost established
juil. 21 21:30:46 alder nut-monitor[368970]: Network UPS Tools upsmon 2.8.1
scĂ©nario «âŻperte de liaisonâŻÂ» fonctionne comme prĂ©vu
Ce que montrent tes logs
Poll UPS [eaton@localhost] failed - Data stale+Communications with UPS eaton@localhost lost: câest exactement lâĂ©vĂ©nement COMMBAD/COMMBAD que NUT dĂ©clenche quand le cĂąble USB est dĂ©branchĂ© ou que le driver ne voit plus lâUPS- Juste aprĂšs, on voit ton message JSON ntfy, ce qui veut dire que toute la chaĂźne fonctionne :
driver â upsd â upsmon â upssched âupssched-cmdâ notification ntfy.
Ă propos de «âŻData staleâŻÂ»
Les messages «âŻData staleâŻÂ» sont normaux quand on dĂ©branche lâUSB : upsd marque les donnĂ©es comme pĂ©rimĂ©es, et upsmon le signale avant de dĂ©clarer la perte de communication.
On peut les considĂ©rer comme des logs techniques, ils nâindiquent pas un bug dansla config, juste la sĂ©quence normale de dĂ©connexion.
Tester le shutdown automatique
Pour tester le shutdown automatique en utilisant upsdrvctl, lâidĂ©e est de simuler exactement ce que ferait NUT en fin de coupure, mais de maniĂšre contrĂŽlĂ©e. On distingue deux chosesâŻ: tester sans rĂ©ellement Ă©teindre lâUPS (mode test) et tester en vrai.
1. Ce que fait normalement NUT lors dâun shutdown
Avec ta config :
upsmonreçoit un événement critique (souvent FSD ou LOWBATT).- Il crée le fichier
POWERDOWNFLAG(par ex./etc/killpower) et lanceSHUTDOWNCMD "/sbin/shutdown -h +0". - Pendant la sĂ©quence dâarrĂȘt, un script dâinit (typiquement le script
nutou équivalent de ta distro) vérifie la présence dePOWERDOWNFLAGet, si présent, appelle :
1
upsdrvctl shutdown
Ce upsdrvctl shutdown est ce qui envoie la commande de coupure Ă lâUPS (timer, arrĂȘt du relais, etc.).
Lâobjectif du test est de vĂ©rifier que :
- La machine sâĂ©teint proprement quand NUT dĂ©clenche lâarrĂȘt.
- LâUPS coupe bien la sortie quand la sĂ©quence est complĂšte, et Ă©ventuellement se rallume quand le secteur revient.
2. Tester sans Ă©teindre rĂ©ellement lâUPS (mode test)
On peut dâabord voir ce que ferait upsdrvctl sans couper lâalimentation :
1
sudo upsdrvctl -t shutdown
- Lâoption
-tmetupsdrvctlen mode test : il affiche les actions quâil ferait (appel du driver avec-k, ordre de shutdown, etc.) mais ne les exĂ©cute pas. - Cela permet de vĂ©rifier que ta configuration
ups.confest correcte (sections,sdorder, etc.) sans risquer une coupure réelle.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
*** Testing mode: not calling exec/kill/signal
0.000000 [D2]
If you're not a NUT core developer, chances are that you're told to enable debugging
to see why a driver isn't working for you. We're sorry for the confusion, but this is
the 'upsdrvctl' wrapper, not the driver you're interested in.
Below you'll find one or more lines starting with 'exec:' followed by an absolute
path to the driver binary and some command line option. This is what the driver
starts and you need to copy and paste that line and append the debug flags to that
line (less the 'exec:' prefix).
Alternately, provide an additional '-d' (lower-case) parameter to 'upsdrvctl' to
pass its current debug level to the launched driver, and '-B' keeps it backgrounded.
0.000220 [D1] upsdrvctl commanding all drivers (1 found): (null)
0.000228 [D1] Shutdown UPS: eaton
0.000234 [D2] exec: /usr/lib/nut/usbhid-ups -a eaton -k
0.000237 [D1] upsdrvctl: successfully finished
0.000242 [D1] Completed the job of upsdrvctl tool, cleaning up and exiting now
0.000246 [D1] Completed the job of upsdrvctl tool, clean-up finished, exiting now
Si cette commande sâexĂ©cute sans erreur, la partie « dialogue avec le driver pour lâarrĂȘt » est correctement configurĂ©e.
3. Simuler la sĂ©quence complĂšte sans toucher Ă lâUPS
Pour tester la logique NUT cĂŽtĂ© OS sans couper physiquement lâalimentation, tu peux :
- Lancer un FSD (Forced Shutdown) via
upsmon:1
sudo /usr/sbin/upsmon -c fsd
Cette commande indicque Ă lâinstance
upsmonquâil doit dĂ©marrer la sĂ©quence de shutdown comme si la batterie Ă©tait critique.
upsmonva gĂ©nĂ©rer lâĂ©vĂ©nementSHUTDOWN, attendreFINALDELAY, Ă©crirePOWERDOWNFLAGet lancer tonSHUTDOWNCMD. - VĂ©rifier que ta machine commence bien sa sĂ©quence dâarrĂȘt (
shutdown -h +0). - Sur certaines distributions, les scripts dâinit vont dĂ©tecter
POWERDOWNFLAGpendant lâarrĂȘt et appeler automatiquementupsdrvctl shutdownĂ la fin.
Pour un test sec, tu peux :
- Modifier temporairement
SHUTDOWNCMDpour quâil ne fasse quâunechoou unloggerau lieu dâun vraishutdown, histoire de voir la sĂ©quence sans que la machine sâĂ©teigne. - Ou lancer
upsmon -c fsdsur une machine de test.
4. Tester réellement le shutdown complet avec upsdrvctl
Quand tu seras prĂȘt Ă tester « pour de vrai » :
- Assure-toi que ta machine peut redĂ©marrer sans intervention (BIOS/UEFI configurĂ© pour « Power on after AC restore » ou Ă©quivalent, si tu comptes sur lâUPS pour couper puis rĂ©tablir).
- Laisse NUT dĂ©clencher la sĂ©quence (par coupure secteur prolongĂ©e) ou forceâla avec :
1
sudo /usr/sbin/upsmon -c fsd
- Laisse lâOS suivre sa sĂ©quence dâarrĂȘt jusquâau bout.
-
VĂ©rifie que, dans les scripts dâarrĂȘt de ton systĂšme, lâappel Ă
upsdrvctl shutdownest bien prĂ©sent (souvent dans le script dâinit de NUT) et quâil se lance Ă la toute fin. Tu peux, si besoin, ajouter toiâmĂȘme dans un script dâarrĂȘt personnalisĂ© : ` if [ -f /etc/killpower ]; then /usr/sbin/upsdrvctl shutdown fi` - Observe :
Pour limiter les risques :
- Test sec :
upsdrvctl -t shutdownpour valider la config drivers (aucune coupure). - Test OS :
upsmon -c fsdavec unSHUTDOWNCMDtemporairement inoffensif, pour vérifier la logique NUT et la création dePOWERDOWNFLAG. - Test complet : remettre le vrai
SHUTDOWNCMD, lancerupsmon -c fsdou provoquer une vraie coupure longue, et vĂ©rifier que lâUPS coupe bien la sortie viaupsdrvctl shutdown.


