Unter Linux steht mit den Network UPS Tools ein leistungsfähiges Werkzeug für die Nutzung von unterbrechungsfreien Stromversorgungen (USV) und die Reaktion auf Signale von diesen bereit. So kann ein Server automatisch heruntergefahren werden, wenn der USV der Strom ausgeht.
Hierzu braucht es aber ein wenig Vorbereitung:
- In der Datei /etc/upsmon.conf ein Script definieren, das ausgeführt wird, wenn ein Shutdown-Signal kommt:
SHUTDOWNCMD "/usr/local/sbin/ups_shutdowncmd.sh"
- Darin die erforderlichen Kommandos für den Shutdown hinterlegen. In meinem Falle bedeutet dies, erst alle Mounts meines NAS zu entmounten, dann das NAS herunterzufahren und schliesslich den Server selbst zu stoppen:
sudo /etc/init.d/netfs stop
/opt/local/sbin/buffalo_shutdown.sh &
/bin/sleep 5s
sudo /sbin/shutdown -h now
sudo ist erforderlich, weil das Script nicht mit Root-Rechten, sondern mit der UserID von upsmon ausgeführt wird; dies ist bei CentOS 5.3 der User nut
- In /etc/sudoers sind folgende Ergänzungen nötig:
Defaults:nut !requiretty
nut ALL=(root) NOPASSWD: /sbin/shutdown
nut ALL=(root) NOPASSWD: /etc/init.d/netfs
Die „Defaults“ Zeile er möglicht dem User nut auch, Kommandos ohne ein laufendes Terminal abzusetzen. Ohne diese Zeile wären die Kommandos zwar interaktiv von einer Shell, aber nicht aus dem Script möglich. Die beiden anderen Zeilen geben die Kommandos ohne vorherige Passworteingabe frei.