# Projet Domos, Entraidelec 2010. Licence GNU GPL v3. # L appel de la procédure doit indiquer par -v mail=oui pour envoyer une alerte # par -v extinction=oui pour arrêter le système hébergeant domos si sur batterie de longue durée BEGIN { print "Règle Serveur sur batterie version 4\n" if (URLserveur == "") URLserveur = "192.168.1.21" # l adresse brut du serveur web comme 192.168.1.20 URLstatus = ("http://" URLserveur "/status.xml") # le fichier d'état de la carte rapport = "/var/log/onduleurs.log" # rapport continu des changements message = "/home/tux/message.txt" # contenu du dernier email envoyé "date" |& getline heure if (ProxyPort == 0) ProxyPort = 80 HttpService = "/inet/tcp/0/" URLserveur "/" ProxyPort ORS = RS = "\r\n\r\n" getline entete < "entete_email.txt" # entete du message de notification # boucle qui fait le tour des 4 jetons for (i = 0; i < 4; i++) { getline jeton < ("jeton" (i+1) ".txt") print "GET " URLstatus " HTTP/1.0" |& HttpService while ((HttpService |& getline etat) > 0) { # Boucle de vérification des valeurs des entrées for (j = 0; j < 4; j++) { encours = ("dn") secteur = (encours ">up") ligne1 = ligne2 = ligne3 = " " # test changement d'état if ( etat ~ batterie && jeton == secteur ) { print (heure " mode batterie sur onduleur " j+1) >> rapport print batterie > ("jeton" (j+1) ".txt") } if ( etat ~ secteur && jeton == batterie ) { print (heure " mode secteur sur onduleur " j+1) >> rapport print secteur > ("jeton" (j+1) ".txt") } # test duree batterie if ( etat ~ batterie && jeton == batterie ) { ligne1 = (heure " mode batterie prolongé sur onduleur " j+1) # extinction sur onduleur j+1 donc a adapter à votre branchement if (extinction == "oui" && j == 3) { ligne2 = (" Arrêt du serveur programmé dans 20 secondes") eteindre = extinction } if (mail == "oui") { ligne3 = (" Notification de l'envoi du rapport par email") envoyer = mail } print (ligne1 "\n" ligne2 "\n" ligne3) >> rapport } } } close(HttpService) print ("valeur jeton :" jeton) close ("jeton" (i+1) ".txt") } close ("date") ORS = RS = "\n\r\n\r" getline corps < rapport print entete, corps > message if (envoyer == "oui") { print | "less -EM~ " message " | sendmail -v -t " } if (eteindre == "oui") { print |& "poweroff -d 20" } system ("sleep 1") print "ok" }