Ho deciso di usare NUT per gestire un UPS.
Di seguito la procedura che ho usato, provata su Kubuntu 14.04.
Ho innanzitutto collegato il cavo usb, e tramite il comando
lsusb
ho già trovato l'UPS
Bus 003 Device 003: ID 0665:5161 Cypress Semiconductor USB to Serial
Ovviamente le informazioni riguardanti Bus e Device potrebbero essere diverse dalla mia configurazione, il resto dovrebbe essere uguale.
A questo punto installiamo NUT con il solito comando
sudo apt-get install nut
Ora, i file che ci interessano si dovrebbero trovare sotto /etc/nut e dovremmo controllare permessi e proprietari, dovrebbero risultare come i miei qui sotto
-rw-r----- 1 root nut 1544 mag 29 01:57 nut.conf -rw-r----- 1 root nut 4723 mag 28 20:06 ups.conf -rw-r----- 1 root nut 4572 mag 28 20:08 upsd.conf -rw-r----- 1 root nut 2246 mag 28 20:10 upsd.users -rw-r----- 1 root nut 15310 giu 6 11:55 upsmon.conf -rw-r----- 1 root nut 3887 dic 30 11:04 upssched.conf
quindi permessi 640, proprietario root e gruppo nut.
Ora configuriamo il file /etc/nut/nut.conf inserendo la riga
MODE=standalone
poi tocca al file /etc/nut/ups.conf ed inserire le seguenti righe
[atlantis] driver = blazer_usb subdriver = cypress protocol = mustek vendorid = 0665 productid = 5161 port = auto desc = "AtlantisLand Host Power 851"
Ovviamente [atlantis] è ciò che ho scritto io, ma si può inserire qualsiasi riferimento, questo non sarà altro che il nome che prenderà l'UPS monitorato; mentre l'ultima riga, 'desc' riporta la descrizione che apparirà in diversi comandi al momento dell'interrogazione, anche qui si può inserire una descrizione a piacere.
Ora configuriamo il file /etc/nut/upsd.conf verificando che siano decommentate (cioè senza il cancelletto # iniziale) le seguenti righe, in caso contrario decommentarle
MAXAGE 15 LISTEN 127.0.0.1 3493 MAXCONN 1024
Configurare il file /etc/nut/upsd.users inserendo le seguenti righe
[admin] password = password-admin actions = SET instcmds = ALL [nome-utente] password = password-utente allowfrom = localhost upsmon master
creando così gli utenti che potranno interagire con il server NUT, ovviamente bisognerà personalizzare le 2 password, inserendo quella dell'utente admin e quella di nome-utente, e cambiare appunto anche "nome-utente" con l'utente che si vuole abilitare.
QUI la pagina ufficiale che spiega un po' questo file.
Ora configuriamo cosa monitorare e come, configuriamo il file /etc/nut/upsmon.conf e verifichiamo che siano decommentate un po' di righe:
RUN_AS_USER nut MINSUPPLIES 1 SHUTDOWNCMD "/sbin/shutdown -h +0" NOTIFYCMD /etc/nut/UPS-Notify.sh POLLFREQ 15 POLLFREQALERT 5 HOSTSYNC 15 DEADTIME 15 POWERDOWNFLAG /etc/killpower NOTIFYMSG ONLINE "UPS %s Ripristino AC" NOTIFYMSG ONBATT "UPS %s AC Persa - Alim. BATTERIA" NOTIFYMSG LOWBATT "UPS %s Carica Batteria Bassa" NOTIFYMSG FSD "UPS %s: Chiusura Forzata in corso..." NOTIFYMSG COMMOK "Comunicazione Stabilita con UPS %s" NOTIFYMSG COMMBAD "Comunicazione Persa con UPS %s" NOTIFYMSG SHUTDOWN "Logout e Spegnimento Automatico in corso..." NOTIFYMSG REPLBATT "UPS %s - Sostituire la Batteria" NOTIFYMSG NOCOMM "UPS %s non è Disponibile" NOTIFYMSG NOPARENT "Processo UPSMON Terminato - Impossibile Spegnere" NOTIFYFLAG ONLINE SYSLOG+WALL+EXEC NOTIFYFLAG ONBATT SYSLOG+WALL+EXEC NOTIFYFLAG LOWBATT SYSLOG+WALL+EXEC NOTIFYFLAG FSD SYSLOG+WALL+EXEC NOTIFYFLAG COMMOK SYSLOG+WALL+EXEC NOTIFYFLAG COMMBAD SYSLOG+WALL+EXEC NOTIFYFLAG SHUTDOWN SYSLOG+WALL+EXEC NOTIFYFLAG REPLBATT SYSLOG+WALL+EXEC NOTIFYFLAG NOCOMM SYSLOG+WALL+EXEC NOTIFYFLAG NOPARENT SYSLOG+WALL+EXEC RBWARNTIME 43200 NOCOMMWARNTIME 300 FINALDELAY 60 MONITOR atlantis@localhost 1 nome-utente password-utente master
QUI un po' di spiegazioni...
Ovviamente le righe sopra riportate sono quelle del mio file di configurazione, ma potranno essere modificate, di sicuro lo dovrà essere l'ultima, dove al posto di nome-utente e password-utente dovranno essere usate quelle impostate prima nel file upsd.users.
La direttiva SHUTDOWNCMD nel mio caso spegne il PC, altrimenti può essere sostituita con
SHUTDOWNCMD "/usr/sbin/pm-hibernate"
oppure
SHUTDOWNCMD "/usr/sbin/pm-suspend"
o altre, insomma non è altro che il comando che verrà eseguito come spegnimento, si può anche associare uno script creato da noi stessi.
La direttiva NOTIFYCMD invece identifica lo script da lanciare quando succede qualcosa, con "qualcosa" si intende un evento NOTIFYMSG, quindi ad esempio quando viene a mancare tensione, la carica della batteria è bassa ecc.
Come si può notare io ho impostato l'avviso per ogni evento, ma è possibile commentare tutto o solo quello che non interessa.
Il mio file UPS-Notify.sh contiene queste righe:
#!/bin/bash
echo "$@" | mail -s "NUT - UPS Atlantis" Questo indirizzo email è protetto dagli spambots. È necessario abilitare JavaScript per vederlo.
ossia mi manda una e-mail ad ogni evento che io ho selezionato con NOTIFYMSG appunto, ovviamente Questo indirizzo email è protetto dagli spambots. È necessario abilitare JavaScript per vederlo. sarà l'indirizzo e-mail a cui inviare le notifiche.
Una riavviata e, se tutto è andato per il verso giusto, dovrebbe funzionare.
Ed ora un po' di manovre da terminale:
Per controllare tutti i parametri attuali:
upsc atlantis
oppure, se siamo su una macchina in rete
upsc atlantis@server
dove server non è altro che il nome o l'IP del PC dove gira NUT, localhost per il PC locale, che può essere omesso come indica il comando precedente.
Per richiedere lo stato di un parametro in particolare:
upsc atlantis ups.status
Per visualizzare una lista di comandi accettati per controllare l'UPS:
upscmd -l atlantis@localhost
otterremo un risultato del genere:
Instant commands supported on UPS [atlantis]: beeper.toggle - Toggle the UPS beeper load.off - Turn off the load immediately load.on - Turn on the load immediately shutdown.return - Turn off the load and return when power is back shutdown.stayoff - Turn off the load and remain off shutdown.stop - Stop a shutdown in progress test.battery.start - Start a battery test test.battery.start.deep - Start a deep battery test test.battery.start.quick - Start a quick battery test test.battery.stop - Stop the battery test
per inviare un comando all'unità
upscmd -u admin -p password-utente-admin atlantis test.battery.start.quick
dove admin e password-utente-admin sono quelle dichiarate nel file citato prima /etc/nut/upsd.users .
Ovviamente a questo punto si possono creare script e/o pagine web per svariate esigenze.