summaryrefslogtreecommitdiff
path: root/sys-power/nut/files/nut.powerfail.initd
blob: f81b258a7cdb1b634039f4d69eaca7533015ae0e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#!/sbin/openrc-run
# Copyright 1999-2014 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2

description='Signal the UPS to kill power in a power failure condition'

depend() {
	# This is only for baselayout2
	if [ -f /etc/init.d/sysfs ]; then
		keyword -jail -lxc -openvz -prefix -uml -vserver -xenu -timeout
		need mount-ro
	fi
}

start() {
	if [ ! -f /etc/init.d/sysfs ]; then
		eerror "The $SVCNAME init-script is written for baselayout-2!"
		eerror "Please do not use it with baselayout-1!".
		return 1
	fi
	local UPS_CTL UPS_POWERDOWN

	if [ -f /etc/killpower -o -f /etc/nut/killpower ]; then
		UPS_CTL=/sbin/upsdrvctl
		UPS_POWERDOWN="${UPS_CTL} shutdown"
	elif [ -f /etc/apcupsd/powerfail ]; then
		UPS_CTL=/sbin/apcupsd
		UPS_POWERDOWN="${UPS_CTL} --killpower"
	else
		ewarn "UPS powerfail script scheduled, but no poweroff commands found."
		return 0
	fi

	if [ -f "${UPS_CTL}" -a -x "${UPS_CTL}" ]; then
		ebegin 'Signaling UPS to kill power'
		${UPS_POWERDOWN}
		eend $?

		ebegin 'Halt system and wait for the UPS to kill our power'
		/sbin/halt -id
		# If the sleep gets hit, something is wrong...
		# do NOT restart the system.
		while [ 1 ]; do sleep 60; done
	else
		ewarn "UPS powerfail script scheduled, and flags found, but ${UPS_CTL} missing."
	fi
}