~upstart-devel/upstart/upstart-jobs

« back to all changes in this revision

Viewing changes to etc/init.d/nut-client

  • Committer: Dimitri John Ledkov
  • Date: 2014-05-06 18:45:46 UTC
  • Revision ID: dimitri.ledkov@canonical.com-20140506184546-5toyx56xxrue0f0v
auto update

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
#! /bin/sh
2
 
### BEGIN INIT INFO
3
 
# Provides:          nut-client upsmon ups-monitor
4
 
# Required-Start:    $local_fs $syslog $network $remote_fs
5
 
# Required-Stop:     $local_fs $syslog $network $remote_fs
6
 
# Should-Start:      nut-server
7
 
# Should-Stop:       
8
 
# Default-Start:     2 3 4 5
9
 
# Default-Stop:      0 1 6
10
 
# Short-Description: Network UPS Tools monitor initscript
11
 
# Description:       This script take care of starting and stopping the
12
 
#                    Network UPS Tools monitoring component (upsmon).
13
 
### END INIT INFO
14
 
 
15
 
# Author: Arnaud Quette <aquette@debian.org>
16
 
 
17
 
PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/sbin:/usr/local/bin
18
 
 
19
 
NAME=nut-client
20
 
DESC="NUT - power device monitor and shutdown controller"
21
 
CONFIG=/etc/nut/nut.conf
22
 
pid_dir=/var/run/nut
23
 
upsmon_pid=${pid_dir}/upsmon.pid
24
 
upsmon=/sbin/upsmon
25
 
log=">/dev/null 2>/dev/null"
26
 
 
27
 
# Define LSB log_* functions.
28
 
# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
29
 
. /lib/lsb/init-functions
30
 
 
31
 
# set upsmon specific options. use "man upsmon" for more info
32
 
# this parameter is now located in nut.conf, and not in /etc/default/nut anymore
33
 
# FIXME: retrieved from 'nut' script during update 
34
 
UPSMON_OPTIONS=""
35
 
 
36
 
# Exit if the package is not installed
37
 
[ -x "$upsmon" ] || exit 0
38
 
 
39
 
# Include NUT nut.conf
40
 
[ -r $CONFIG ] && . $CONFIG
41
 
 
42
 
# FIXME: put all common bits, between nut-client and nut-server,
43
 
# into a common nut-function
44
 
 
45
 
# Explicitly require the configuration to be done in /etc/nut/nut.conf
46
 
if [ "x$MODE" = "xnone" -o -z "$MODE" ] ; then
47
 
    log_action_msg "$NAME disabled, please adjust the configuration to your needs"
48
 
    log_action_msg "Then set MODE to a suitable value in $CONFIG to enable it"
49
 
    # exit success to avoid breaking the install process!
50
 
    exit 0
51
 
fi
52
 
 
53
 
# Check if /var/run/nut exists and has the correct perms
54
 
check_var_directory() {
55
 
  [ ! -d ${pid_dir} ] && mkdir -p ${pid_dir} \
56
 
    && chown root:nut ${pid_dir} \
57
 
    && chmod 770 ${pid_dir} \
58
 
    && [ -x /sbin/restorecon ] && /sbin/restorecon ${pid_dir}
59
 
}
60
 
 
61
 
# check if the right components are running
62
 
check_status() {
63
 
  case "$MODE" in
64
 
    standalone|netserver|netclient)
65
 
      status_of_proc -p $upsmon_pid $upsmon upsmon
66
 
      ;;
67
 
    none|*)
68
 
      ;;
69
 
  esac
70
 
}
71
 
 
72
 
start_stop_client () {
73
 
  case "$MODE" in
74
 
    standalone|netserver|netclient)
75
 
      # FIXME: for standalone|netserver, ensure 'nut-server status' returns ?
76
 
      case "$1" in
77
 
        start)
78
 
          start-stop-daemon -S -q -p $upsmon_pid -x $upsmon \
79
 
              -- $UPSMON_OPTIONS >/dev/null 2>&1 && return 0 || return 1
80
 
          ;;
81
 
        stop)
82
 
          start-stop-daemon -K -o -q -p $upsmon_pid -n upsmon >/dev/null 2>&1 \
83
 
            && return 0 || return 1
84
 
          ;;
85
 
      esac
86
 
      ;;
87
 
    none|*)
88
 
      return 1
89
 
      ;;
90
 
  esac
91
 
}
92
 
 
93
 
case "$1" in
94
 
 
95
 
  start)
96
 
    log_daemon_msg "Starting $DESC" "$NAME"
97
 
    check_var_directory
98
 
    start_stop_client start
99
 
    log_end_msg $?
100
 
    ;;
101
 
 
102
 
  stop)
103
 
    log_daemon_msg "Stopping $DESC" "$NAME"
104
 
    start_stop_client stop
105
 
    log_end_msg $?
106
 
    ;;
107
 
 
108
 
  reload)
109
 
    log_daemon_msg "Reloading $DESC" "$NAME"
110
 
    $upsmon -c reload >/dev/null 2>&1
111
 
    log_end_msg $?
112
 
    ;;
113
 
 
114
 
  restart|force-reload)
115
 
    # FIXME: lack consistency, due to initscript split.
116
 
    # This only addresses partial reload.
117
 
    # Full reload requires to:
118
 
    # - stop nut-client
119
 
    # - restart (Ie stop+start) nut-server
120
 
    # - start nut-client
121
 
    log_daemon_msg "Restarting $DESC" "$NAME"
122
 
    start_stop_client stop || true
123
 
    # should then 'start_stop_server stop', Ie /etc/init.d/nut-server stop
124
 
    #sleep 5
125
 
    check_var_directory
126
 
    # should first 'start_stop_server start', Ie /etc/init.d/nut-server start
127
 
    start_stop_client start
128
 
    log_end_msg $?
129
 
    ;;
130
 
 
131
 
  status)
132
 
    #log_daemon_msg "Checking status of $DESC"
133
 
    echo "Checking status of $DESC"
134
 
    check_status
135
 
    exit $?
136
 
    ;;
137
 
 
138
 
  poweroff)
139
 
    case "$MODE" in
140
 
      standalone|netserver)
141
 
        # Sanity check
142
 
        flag=`sed -ne 's#^ *POWERDOWNFLAG *\(.*\)$#\1#p' /etc/nut/upsmon.conf`
143
 
        if [ -z "$flag" ] ; then
144
 
          log_action_msg "##########################################################"
145
 
          log_action_msg "## POWERDOWNFLAG is not defined in /etc/nut/upsmon.conf ##"
146
 
          log_action_msg "##                                                      ##"
147
 
          log_action_msg "## Please read the Manual page upsmon.conf(5)           ##"
148
 
          log_action_msg "##########################################################"
149
 
          exit 1
150
 
        fi
151
 
 
152
 
        # Defer to nut-server to actually poweroff the UPS, if needed
153
 
        # (the need is tested here though!)
154
 
        if $upsmon -K >/dev/null 2>&1 ; then
155
 
          log_daemon_msg "UPS poweroff required..."
156
 
          log_end_msg 0
157
 
          if [ -x /etc/init.d/nut-server ] ; then
158
 
            exec /etc/init.d/nut-server poweroff
159
 
          else
160
 
            log_action_msg "Failure: /etc/init.d/nut-server script missing"
161
 
          fi
162
 
        else
163
 
          log_action_msg "Power down flag is not set (UPS poweroff not needed)"
164
 
        fi
165
 
        ;;
166
 
      none|netclient|*)
167
 
        # nothing to do
168
 
        log_action_msg "'$MODE' configuration does not require UPS poweroff"
169
 
        ;;
170
 
    esac
171
 
    ;;
172
 
 
173
 
  *)
174
 
    N=/etc/init.d/$NAME
175
 
    echo "Usage: $N {start|stop|reload|restart|force-reload|status|poweroff}" >&2
176
 
    exit 1
177
 
    ;;
178
 
esac
179
 
 
180
 
exit 0