Changes

Jump to navigation Jump to search
no edit summary
Line 217: Line 217:  
Plus d'information sur upsrw peut être obtenue sur la page du manuel :
 
Plus d'information sur upsrw peut être obtenue sur la page du manuel :
 
  man upsrw
 
  man upsrw
 +
 +
Un exemple de mise à jour de la date de changement de la batterie (utilisez votre propre mot de passe) :<syntaxhighlight lang="bash">
 +
upsrw -s  battery.mfr.date=2024/01/18 -u admin -p admin UPS
 +
</syntaxhighlight>
    
====Émission de commandes à l'ASI====
 
====Émission de commandes à l'ASI====
Line 343: Line 347:  
</tab>
 
</tab>
   −
</tabs>an example to update you battery date upon changing it. (use your own password)<syntaxhighlight lang="bash">
+
</tabs>
upsrw -battery.mfr.date=2020/08/31 -u admin -p admin UPS
+
 
</syntaxhighlight>
+
=Planification d'évènements=
 +
====Exemple de délai d'arrêt====
 +
Par défaut, NUT émettra une commande d'arrêt dès qu'il recevra un événement de batterie faible de l'onduleur. Il peut y avoir des instances et des configurations d'installation qui nécessitent un arrêt plus tôt, ou d'autres événements avec des résultats chronométrés ou planifiés. Voir les pages '''man''', etc. pour plus d'informations et des exemples de situations.
 +
 
 +
Essentiellement, le programme '''upsmon''' surveille l'onduleur concerné et pour chaque événement '''NOTIFYFLAG''' dans '''upsmon.conf''' prend l'action immédiate telle que définie. Afin de retarder ou de planifier des actions, les événements doivent être transmis à '''upssched''' qui peut définir des minuteries et planifier des événements.
 +
 
 +
Les modifications suivantes apportées à la configuration normale de NUT sur le serveur Koozali SME arrêteront le serveur après un délai spécifié, après avoir reçu le signal « sur batterie » (l'exemple donné est de 2 minutes). Cela suppose que vous disposez déjà d'une configuration NUT et d'une ASI activées et fonctionnelles.
 +
 
 +
Pour créer un arrêt temporisé avant la réception du signal '''BATTLOW''', il est nécessaire de configurer '''upssched''' et d'avoir un script pour gérer les événements UPS ('''upsmon''' ne peut pas faire cela).
 +
 +
 +
En premier, nous avons besoin de créer un nouveau répertoire pour un modèle personnalisé :
 +
mkdir -p /etc/e-smith/templates-custom/etc/ups/upsmon.conf
 +
cd /etc/e-smith/templates-custom/etc/ups/upsmon.conf
 +
 
 +
Créez et éditez un nouveau fichier appelé 'NOTIFYCMD' avec le contenu suivant :
 +
NOTIFYCMD /usr/sbin/upssched
 +
 
 +
Propagez le modèle :
 +
/sbin/e-smith/expand-template /etc/ups/upsmon.conf
 +
 
 +
Créez maintenant un autre répertoire pour un modèle personnalisé :
 +
mkdir -p /etc/e-smith/templates-custom/etc/ups/upssched.conf
 +
cd /etc/e-smith/templates-custom/etc/ups/upssched.conf
 +
 
 +
Créez et éditez un nouveau fichier appelé '01CONFIG' avec le contenu suivant :
 +
CMDSCRIPT /sbin/e-smith/nutUPS.cmd
 +
PIPEFN /tmp/upspipe
 +
LOCKFN /tmp/upslock
 +
AT COMMBAD * EXECUTE commbad
 +
AT COMMOK * EXECUTE commok
 +
AT NOCOMM * EXECUTE nocomm
 +
AT ONBATT * EXECUTE powerout
 +
AT ONBATT * START-TIMER shutdownnow 120   
 +
AT LOWBATT * EXECUTE shutdowncritical
 +
AT ONLINE * CANCEL-TIMER shutdownnow
 +
AT ONLINE * EXECUTE powerup
 +
 
 +
Dans ce qui précéède, définissez dans la ligne :
 +
AT ONBATT * START-TIMER shutdownnow 120
 +
le délai en secondes, après le signal ONBATT, après lequel vous voulez arrêter.
 +
 
 +
Propagez le modèle :
 +
/sbin/e-smith/expand-template /etc/ups/upssched.conf
 +
 
 +
 
 +
Créez et éditez un nouveau script à :
 +
/sbin/e-smith/nutUPS.cmd
 +
 
 +
Ajoutez le contenu suivant :
 +
 
 +
#! /bin/sh
 +
        case $1 in
 +
                commbad)
 +
                        /bin/echo "UPS communications failure on `date`." | /bin/mail -s"UPS communications LOST" admin
 +
                        /usr/bin/wall "UPS communications failure."
 +
                        ;;
 +
                commok)
 +
                        /bin/echo "UPS communications restored on `date`." | /bin/mail -s"UPS communications restored" admin
 +
                        /usr/bin/wall "UPS communications restored."
 +
                        ;;
 +
                nocomm)
 +
                        /bin/echo "UPS communications cannot be established on `date`." | /bin/mail -s"UPS uncontactable" admin
 +
                        /usr/bin/wall "UPS communications cannot be established."
 +
                        ;;
 +
                powerout)
 +
                        /bin/echo "Power failure on `date`." | /bin/mail -s"UPS on battery" admin
 +
                        /usr/bin/wall "UPS on battery. Shutdown in 60 seconds...."
 +
                        ;;
 +
                shutdownnow)
 +
                        /bin/echo "UPS has been on battery for 60 seconds. Starting orderly shutdown on `date`." | /bin/mail -s"UPS on battery for 60 seconds" admin
 +
                        /usr/bin/wall "UPS has been on battery for 60 seconds. Shutting down NOW!!!!"
 +
                        /usr/bin/sudo /sbin/e-smith/signal-event halt
 +
                        ;;
 +
                shutdowncritical)
 +
                        /bin/echo "UPS battery level CRITICAL. Starting EMERGENCY shutdown on `date`." | /bin/mail -s"UPS battery CRITICAL" admin
 +
                        /usr/bin/wall "UPS battery level CRITICAL. Shutting down NOW!!!!"
 +
                        /usr/bin/sudo /sbin/e-smith/signal-event halt
 +
                        ;;
 +
                powerup)
 +
                        /bin/echo "Power restored on `date`." | /bin/mail -s"UPS on line" admin
 +
                        /usr/bin/wall "UPS on line. Shutdown aborted."
 +
                        ;;
 +
                *)
 +
                        /bin/echo "Unrecognized command: $1"
 +
                        ;;
 +
        esac
 +
 
 +
Maintenant, rendez-le exécutable par l'utilisateur '''nut''' :
 +
chmod 754 /sbin/e-smith/nutUPS.cmd
 +
chown root:nut /sbin/e-smith/nutUPS.cmd
 +
 
 +
Nut nécessite d'utiliser sudo pour que ce processus fonctionne, donc sudo doit être configuré pour activer l'utilisateur nut. Par défaut, le fichier /etc/sudoers ne fait pas partie du système de modèles du serveur Koozali SME. Pour contourner ce problème, créez un répertoire de modèles personnalisé :
 +
mkdir -p /etc/e-smith/templates-custom/etc/sudoers
 +
cd /etc/e-smith/templates-custom/etc/sudoers
 +
 
 +
Pour préserver le contenu du fichier original /etc/sudoers, copiez celui-ci dans le répertoire de modèles personnalisé :
 +
cp /etc/sudoers 10sudoers
 +
 
 +
Créer et éditer un nouveau fichier dénommé '30nut' avec le contenu suivant :
 +
nut  ALL=NOPASSWD: ALL
 +
 
 +
Puis exécutez :
 +
/sbin/e-smith/expand-template /etc/sudoers
 +
 
 +
Finalement, pour terminer le processus :
 +
signal-event post-upgrade
 +
signal-event reboot
 +
 
 +
Lors des tests sur SMEServer v9.1 (vers mars 2016), le script <tt>nutUPS.cmd</tt> ci-dessus avec des entrées dans le modèle <tt>01CONFIG</tt> plantait à cause du manque de droits sur <tt>shutdownnow</tt> dans :
 +
/usr/bin/sudo /sbin/e-smith/signal-event halt
 +
 
 +
La modification de <tt>/etc/sudoers</tt> ne l'a pas réglé.
 +
 
 +
Voici l'erreur dans le journal <tt>/var/log/messages</tt> :
 +
<pre>
 +
Mar 14 13:22:16 svr01 upssched[3507]: Timer daemon started
 +
Mar 14 13:22:16 svr01 upssched[3507]: New timer: shutdownnow (120 seconds)
 +
Mar 14 13:25:16 svr01 upssched[3507]: Event: shutdownnow
 +
Mar 14 13:25:16 svr01 wall[3539]: wall: user nut broadcasted 1 lines (70 chars)
 +
Mar 14 13:25:16 svr01 upssched[3507]: exec_cmd(/sbin/e-smith/nutUPS.cmd shutdownnow) returned 1
 +
</pre>
 +
 
 +
Pourtant, l'utilisateur '''nut''' dispose des autorisations d'arrêt nécessaires :
 +
/usr/bin/sudo -u nut /usr/bin/sudo /sbin/e-smith/signal-event halt
 +
 
 +
=Configure Nut-cgi Monitor Scripts=
 +
 
 +
The nut-cgi rpm contains scripts that can be run via the webserver to monitor the UPS(s).
3,072

edits

Navigation menu