Gestione di un UPS in Debian con Nut

From RVM Wiki
Jump to navigation Jump to search

Server con UPS collegato

  • Installazione software
sudo apt-get install nut pwgen
export UPS_NAME="apc_smartups_1500_rm"
export UPS_PASS="$(pwgen -B -c -1)"
export UPS_IP="192.168.0.102"
  • Impostare la modalità di esecuzione per un solo UPS:
export UPS_MODE=standalone
  • Oppure per un server che controlla anche altri ups
export UPS_MODE=netserver
  • Configurare la modalità:
sudo sed -i /etc/nut/nut.conf -e "s/^MODE=none/MODE=${UPS_MODE}/"

Configurazione UPS APC USB

cat | sudo tee -a /etc/nut/ups.conf > /dev/null <<EOFile
[$UPS_NAME]
    driver = usbhid-ups
    port = auto
EOFile
  • Avviare il driver
sudo upsdrvctl start
  • Se si riceve l'errore segeutne, togliere e rimettere il cavo USB, oppure riavviare, per far settare le permission sul device della porta usb:


Network UPS Tools - UPS driver controller 2.4.3
Network UPS Tools - Generic HID driver 0.34 (2.4.3)
USB communication driver 0.31

Can't claim USB device [051d:0002]: could not detach kernel driver from interface 0: Operation not permitted
Driver failed to start (exit status=1)
*Se non è possibile riavviare o staccare il cavo, provare le seguenti operazioni:
sudo rmmod usbhid
sudo udevadm trigger
  • Riprovare
sudo upsdrvctl start

Per UPS APC Seriale

cat | sudo tee -a /etc/nut/ups.conf > /dev/null <<EOFile
[$UPS_NAME]
    driver = apcsmart
    port = /dev/ttyS0
EOFile
  • Aggiungere l'utente nut al gruppo dialout, per poter usare la seriale:
sudo gpasswd -a nut dialout

Altri UPS

Per altri modelli di UPS, vedi NUT hardware compatibility list

Configurazione server

  • Avviare il demone per controllare il dialogo con l'UPS:
sudo invoke-rc.d nut stop
sudo killall upsd
sudo upsdrvctl start
Network UPS Tools - UPS driver controller 2.2.2
Network UPS Tools (version 2.2.2) - APC Smart protocol driver
        Driver version 1.99.8, command table version 2.0
  • Se non dovesse funzionare, provare a scollegare e ricollegare il cavo di collegamento dell'ups, per caricare i moduli necessari.
sudo upsdrvctl stop
  • Configurare il demone:
cat | sudo tee -a /etc/nut/upsd.conf > /dev/null <<EOFile
LISTEN 127.0.0.1 3493
LISTEN ${UPS_IP} 3493
EOFile
  • Configurare gli utenti e le password:
cat | sudo tee -a /etc/nut/upsd.users > /dev/null <<EOFile
[local_mon]                  #username
    password = $UPS_PASS     #password
    actions = set            #permissions for upsrw -s
    instcmds = ALL           #permissions for upscmd
    upsmon master            #role
EOFile
  • Configurare il monitor:
sudo sed -i -e "/# MONITOR myups@localhost 1 upsmon pass master/ a\
MONITOR ${UPS_NAME}@localhost 1 local_mon ${UPS_PASS} master" /etc/nut/upsmon.conf | grep ^MONITOR


  • Riavviare il tutto:
sudo invoke-rc.d nut  restart
Restarting Network UPS Tools: upsdrvctl upsdrvctl upsd upsmon.
  • Nei log:
sudo tail -f /var/log/syslog
Apr 12 13:54:18 pubserver apcsmart[32070]: Startup successful
Apr 12 13:54:18 pubserver upsd[32071]: listening on 0.0.0.0 port 3493
Apr 12 13:54:18 pubserver upsd[32071]: Connected to UPS [apc_smartups_620]: apcsmart-apc_smartups_620
Apr 12 13:54:18 pubserver upsd[32073]: Startup successful
Apr 12 13:54:18 pubserver upsmon[32075]: Startup successful
Apr 12 13:54:18 pubserver upsd[32073]: Connection from 127.0.0.1
Apr 12 13:54:18 pubserver upsd[32073]: Client local_mon@127.0.0.1 logged into UPS [apc_smartups_620]
  • Per leggere i dati dall'ups:
upsc $UPS_NAME
battery.alarm.threshold: L
battery.charge: 100.0
battery.charge.restart: 00
battery.date: 02/05/02
battery.runtime: 1920
battery.runtime.low: 120
battery.voltage: 13.85
battery.voltage.nominal: 012
driver.name: apcsmart
driver.parameter.pollinterval: 2
driver.parameter.port: /dev/ttyS0
driver.version: 2.2.2
driver.version.internal: 1.99.8
input.frequency: 50.00
input.quality: FF
input.sensitivity: H
input.transfer.high: 253
input.transfer.low: 208
input.transfer.reason: T
input.voltage: 227.5
input.voltage.maximum: 227.5
input.voltage.minimum: 224.6
output.voltage: 227.5
output.voltage.nominal: 230
ups.delay.shutdown: 180
ups.delay.start: 000
ups.firmware: 22.5.I
ups.id: UPS_IDEN
ups.load: 031.8
ups.mfr: APC
ups.mfr.date: 04/25/00
ups.model: Smart-UPS 620   
ups.serial: NS0018141441
ups.status: OL
ups.test.interval: 1209600
ups.test.result: NO

Impostazione dei parametri hardware per l'ups

  • Elencare i parametri configurabili
upsrv $UPS_NAME
si ottiene una lista del tipo:
[battery.alarm.threshold]
Battery alarm threshold
Type: ENUM
Option: "0"
Option: "T"
Option: "L" SELECTED
Option: "N"

[battery.charge.restart]
Minimum battery level for restart after power off (percent)
Type: ENUM
Option: "00" SELECTED
Option: "15"
Option: "50"
Option: "90"
...
  • Le variabili importanti da settare sono:
    • battery.runtime.low: indica a quanti secondi di batteria rimasta iniziare lo shutdown
      • Impostarla con
upsrw -u local_mon -s battery.runtime.low=300 $UPS_NAME
      • Controllarlo con
upsc $UPS_NAME battery.runtime.low
300
    • ups.id: indica il nome dell'ups, la su descrizione (da apporre sull'etichetta)
upsrw -u local_mon -s ups.id="UPS001" $UPS_NAME
      • controllare
upsc $UPS_NAME ups.id
UPS001
    • ups.delay.shutdown: indica dopo quanto tempo verrà tolta la corrente. ATTENZIONE: se si riaccendono manualmente le macchine dopo uno shutdown, la corrente verrà di nuovo tolta dopo questo tempo !!!
    • ups.delay.start: indica dopo quanto tempo verrà ridata corrente.
      • impostarlo a:
upsrw -u local_mon -s ups.delay.start=060 $UPS_NAME
      • controllarlo
upsc apc_smartups_620 ups.delay.start
060
    • battery.charge.restart: indica quanto la batteria deve essere carica, prima di ridare corrente. Per evitare che quando si riaccendono le macchine, se dovesse rimancare la corrente, ci sia abbastanza tempo per rifare shutdown
      • impostarlo a:
upsrw -u local_mon -s battery.charge.restart=15 $UPS_NAME
      • controllarlo con
upsc apc_smartups_620 battery.charge.restart 
15

Client Linux collegato in rete

Configurazione Accesso sul Server

export CLIENT_NAME="firemen"
export CLIENT_DOM="cross.priv"
export CLIENT_IP="192.168.0.254"
export CLIENT_PASS="jeeR9ied"
export UPS_NAME="apc_smartups_1500_rm"
export UPS_SERVER="crosrv01.${CLIENT_DOM}"

  • Configurare il demone:
sudo sed -i -e"/^ACCEPT/i\ACL $CLIENT_NAME ${CLIENT_IP}/32" /etc/nut/upsd.conf
sudo sed -i -e"/^REJECT/i\ACCEPT $CLIENT_NAME" /etc/nut/upsd.conf

A mano:

cat | sudo tee /etc/nut/upsd.conf > /dev/null <<EOFile
ACL all 0.0.0.0/0
ACL localhost 127.0.0.1/32
ACL $CLIENT_NAME ${CLIENT_IP}/32
ACCEPT localhost
ACCEPT $CLIENT_NAME
REJECT all
EOFile
  • Configurare gli utenti e le password:
cat | sudo tee -a /etc/nut/upsd.users > /dev/null <<EOFile
[${CLIENT_NAME}]
    password = $CLIENT_PASS
    allowfrom = ${CLIENT_NAME}.$CLIENT_DOM
    upsmon master
EOFile
sudo invoke-rc.d nut restart

Configurazione Client

  • Installare
sudo aptitude install nut
  • Configurare SOLO il monitor
cat | sudo tee /etc/nut/upsmon.conf > /dev/null <<EOFile
MONITOR ${UPS_NAME}@${UPS_SERVER} 1 ${CLIENT_NAME} ${CLIENT_PASS} slave
POWERDOWNFLAG /etc/killpower
SHUTDOWNCMD "/sbin/shutdown -h now"
EOFile
  • Impostare le permission
sudo chown root:nut /etc/nut/upsmon.conf
sudo chmod 640 /etc/nut/upsmon.conf
  • Impostare l'autostart per il monitor:
sudo sed -i 's/^START_UPSMON=no/START_UPSMON=yes/' /etc/default/nut && \
echo "702612de8e9e1a34c35cd7d4b05baf30  /etc/default/nut" | md5sum --check
  • Riavviare il monitor
sudo invoke-rc.d nut restart
  • Vedere se fa login:
upsc -l $UPS_SERVER
  • Vedere se legge i dati:
upsc  ${UPS_NAME}@${UPS_SERVER} ups.model

Client Windows collegato in rete

  • Lanciare il TOOL
  • Installare come servizio
  • Editare la configurazione, aggiungendo la sola riga:
 MONITOR apc_smartups_620@server.host.dom 1 client_win PASSWORD_HERE slave

Riferimenti