script onduleur nut

script onduleur nut - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 19-05-2016 à 15:28:41    

Bonjour à tous,

 

Actuellement je travail sur la mise en place de nut pour un onduleur sur un serveur.
Or je souhaiterais mettre en place un script lorsque l'onduleur se trouve en mode batterie et en mode en ligne.
Je me suis inspiré d'un exemple que j'ai trouvé:

 


PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/sbin:/usr/local/bin

 

trap "exit 0" SIGTERM

 

if [ "$NOTIFYTYPE" = "ONLINE" ]
then
        echo $0: power restored | wall
        # Cause all instances of this script to exit.
        killall -s SIGTERM `basename $0`
fi

 

if [ "$NOTIFYTYPE" = "ONBATT" ]
then
        echo $0: 3 minutes till system powers down... | wall
        # Loop with one second interval to allow SIGTERM reception.
        let "n = 180"
        while [ $n -ne 0 ]
        do
                sleep 1
                let "n--"
        done
        echo $0: commencing shutdown | wall
        upsmon -c fsd
fi

 

Voici mon problème: lorsque je suis en mode batterie le code se passe bien et le serveur s'éteint correctement au bout de 3 min.
Par contre quand je passe du mode batterie au mode en ligne au bout de 2min mon serveur s'éteint toujours au bout de 3 min je ne comprend pas pourquoi.
Si quelqu'un peut m'aider car je suis débutant en script.
Encore merci

 

edit par BL pour syntaxe


Message édité par black_lord le 19-05-2016 à 17:01:47
Reply

Marsh Posté le 19-05-2016 à 15:28:41   

Reply

Marsh Posté le 19-05-2016 à 18:33:53    

ca veut dire qu il rentre dans le IF d arret
danc il faudrait ajouter genre un lock file
 
echo >/var/lock/$0 dans le if d arret
 
et dans celui du start  si le lock est la le supprimer et exit aavnt la fin du if

Reply

Marsh Posté le 23-05-2016 à 05:40:43    

salut,
 
peu importe qui l'a écrit, le script est très mal conçu.
 
pseudo-code:

Code :
  1. pendant 3 minutes
  2.    acquérir $etat
  3.    si $etat = onLine
  4.    alors
  5.       quitter
  6.    finsi
  7.    attendre 1 seconde
  8. finPendant
  9. éteindre

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed