Imported nut changes from glotzi.
[people/pmueller/ipfire-2.x.git] / src / initscripts / init.d / nut
CommitLineData
4ad79fe6
AF
1#! /bin/sh
2### BEGIN INIT INFO
3# Provides: nut
4# Required-Start: $local_fs $syslog $network
5# Required-Stop: $local_fs $syslog $network
6# Default-Start: 2 3 4 5
7# Default-Stop: 0 1 6
8# Short-Description: Network UPS Tools initscript
9# Description: This script take care of starting and stopping the
10# Network UPS Tools components. When needed, it also
11# handle the UPS hardware shutdown.
12### END INIT INFO
13
14# Author: Arnaud Quette <aquette@debian.org>
15
16PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/sbin:/usr/local/bin
17
18NAME=nut
19DESC="Network UPS Tools"
20DEFAULT=/etc/sysconfig/nut
21CONFIG=/etc/nut/nut.conf
22
23. /etc/sysconfig/rc
24. $rc_functions
25
26# set upsd specific options. use "man upsd" for more info
27UPSD_OPTIONS=""
28
29# set upsmon specific options. use "man upsmon" for more info
30UPSMON_OPTIONS=""
31
32# Include defaults if available (transition period)
33if [ -f $DEFAULT ] ; then
34 . $DEFAULT
35fi
36
37# Include NUT nut.conf
38if [ -f $CONFIG ] ; then
39 . $CONFIG
40fi
41
42# Explicitly require the configuration to be done in /etc/nut/nut.conf
43if [ "x$MODE" = "xnone" ] ; then
44 log_failure_msg "$NAME disabled, please adjust the configuration to your needs "
45 log_failure_msg "and then set MODE to a suitable value in $CONFIG to enable it."
46 # exit success to avoid breaking the install process!
47 exit 0
48fi
49
50pid_dir=/var/run/nut
51upsmon_pid=${pid_dir}/upsmon.pid
52upsd_pid=${pid_dir}/upsd.pid
53upsd=/usr/sbin/upsd
54upsdrvctl=/usr/bin/upsdrvctl
55upsmon=/usr/sbin/upsmon
56log=">/dev/null 2>/dev/null"
57
58# Check if /var/run/nut exists and has the correct perms
59check_var_directory() {
60 [ ! -d ${pid_dir} ] && mkdir -p ${pid_dir} \
61 && chown root:nut ${pid_dir} \
62 && chmod 770 ${pid_dir}
63}
64
65start_stop_server () {
66 case "$MODE" in
67 standalone|netserver)
68 case "$1" in
69 start)
70 ! $upsdrvctl start >/dev/null 2>&1 && boot_mesg "(upsdrvctl failed)"
71 $upsd $UPSD_OPTIONS >/dev/null 2>&1
72 ;;
73 stop)
74 $upsd -c stop >/dev/null 2>&1
75 ! $upsdrvctl stop >/dev/null 2>&1 && boot_mesg "(upsdrvctl failed)"
76 ;;
77 esac
78 ;;
79 none|netclient|*)
80 return 1
81 ;;
82 esac
83}
84
85start_stop_client () {
86 case "$MODE" in
87 standalone|netserver|netclient)
88 case "$1" in
89 start)
90 $upsmon $UPSMON_OPTIONS >/dev/null 2>&1
91 ;;
92 stop)
93 $upsmon -c stop >/dev/null 2>&1
94 ;;
95 esac
96 ;;
97 none|*)
98 return 1
99 ;;
100 esac
101}
102
103case "$1" in
104
105 start)
106 boot_mesg "Starting $DESC"
107 check_var_directory
108 start_stop_server start
109 start_stop_client start
110 ;;
111
112 stop)
113 boot_mesg "Stopping $DESC"
114 start_stop_server stop
115 start_stop_client stop
116 ;;
117
118 reload)
119 $upsd -c reload >/dev/null 2>&1
120 $upsmon -c reload >/dev/null 2>&1
121 ;;
122
123 restart|force-reload)
124 boot_mesg "Restarting $DESC"
125 start_stop_client stop
126 start_stop_server stop
127 sleep 5
128 check_var_directory
129 start_stop_server start
130 start_stop_client start
131 ;;
132
133 poweroff)
134 flag=`sed -ne 's#^ *POWERDOWNFLAG *\(.*\)$#\1#p' /etc/nut/upsmon.conf`
135 wait_delay=`sed -ne 's#^ *POWEROFF_WAIT= *\(.*\)$#\1#p' $CONFIG`
136 if [ -f "$flag" ] ; then
137 if $upsmon -K >/dev/null 2>&1 ; then
138 boot_mesg "Shutting down the UPS ..."
139 sleep 1
140 if $upsdrvctl shutdown ; then
141 sleep 5
142 boot_mesg "Waiting for UPS to cut the power"
143 else
144 boot_mesg "Shutdown failed."
145 boot_mesg "Waiting for UPS batteries to run down"
146 fi
147 if [ "$wait_delay" ] ; then
148 boot_mesg " (will reboot after $wait_delay) ..."
149 sleep "$wait_delay"
150 /etc/init.d/reboot stop
151 fi
152 else
153 boot_mesg "Power down flag is not set (UPS shutdown not needed)"
154 fi
155 else
156 if [ -z "$flag" ] ; then
157 boot_mesg "##########################################################"
158 boot_mesg "## POWERDOWNFLAG is not defined in /etc/nut/upsmon.conf ##"
159 boot_mesg "## ##"
160 boot_mesg "## Please read the Manual page upsmon.conf(5) ##"
161 boot_mesg "##########################################################"
162 fi
163 fi
164 ;;
165
166 *)
167 N=/etc/init.d/$NAME
168 echo "Usage: $N {start|stop|reload|restart|force-reload|poweroff}" >&2
169 exit 1
170 ;;
171esac
172
173exit 0