source: trunk/init/samhain.startLinux.in @ 481

Last change on this file since 481 was 481, checked in by katerina, 6 years ago

Enhancements and fixes for tickets #374, #375, #376, #377, #378, and #379.

File size: 5.5 KB
Line 
1#!/bin/bash
2
3# chkconfig: 2345 99 10
4# description: File Integrity Checking Daemon
5#
6# processname: @install_name@
7# config  : @myconffile@
8# logfile : @mylogfile@
9# database: @mydatafile@
10#
11
12### BEGIN INIT INFO
13# Provides: @install_name@
14# Required-Start: $syslog $network
15# Required-Stop: $syslog $network
16# Default-Start: 2 3 4 5
17# Default-Stop: 0 1 6
18# Short-Description: Keep an eye on stuff
19# Description: Keep an eye on stuff
20### END INIT INFO
21
22# For Debian
23#
24FLAGS="defaults 99 10"
25
26NAME=@install_name@
27DAEMON=@sbindir@/@install_name@
28RETVAL=0
29VERBOSE=yes
30PIDFILE=@mylockfile@
31
32if [ -x $DAEMON ]; then
33        :
34else
35        echo "${0}: executable ${DAEMON} not found"
36        exit 0
37fi
38
39# Sort out sourcing in the distribution specific library functions
40# and the command to run them.
41if [ -f /etc/redhat-release ]; then
42        . /etc/init.d/functions
43        DISTRO=redhat
44elif [ -f /etc/mandrake-release ]; then
45        . /etc/init.d/functions
46        DISTRO=redhat
47elif [ -f /etc/yellowdog-release ]; then
48        . /etc/init.d/functions
49        DISTRO=redhat
50elif [ -f /etc/SuSE-release ]; then
51        . /etc/rc.config
52        . /etc/rc.status
53        # Determine the base and follow a runlevel link name.
54        base=${0##*/}
55        link=${base#*[SK][0-9][0-9]}
56        # Force execution if not called by a runlevel directory.
57        test $link = $base && START_@INSTALL_NAME@=yes
58        # Check whether START_@INSTALL_NAME@ is in /etc/rc.config
59        # If yes, abort unless its value is 'yes'
60        if test "x${START_@INSTALL_NAME@}" != "x"; then
61            test "${START_@INSTALL_NAME@}" = yes || exit 0
62        fi
63        return=$rc_done
64        DISTRO=suse
65elif [ -f /etc/debian_version ]; then
66        # . /etc/default/rcS
67        set -e
68        DISTRO=debian
69elif [ -f /etc/slackware-version ]; then
70        # . /etc/rc.d/rc.sysvinit
71        DISTRO=generic
72else
73        DISTRO=generic
74fi
75
76debian_end()
77{
78        if [ $RETVAL -eq 0 ];
79        then
80                echo "."
81        else
82                echo " failed."
83        fi
84}
85
86# Generic function "a la Red Hat"
87MOVE_TO_COL="echo -en \\033[60G"
88SETCOLOR_SUCCESS="echo -en \\033[1;32m"
89SETCOLOR_FAILURE="echo -en \\033[1;31m"
90SETCOLOR_NORMAL="echo -en \\033[0;39m"
91
92echo_success() {
93        $MOVE_TO_COL
94        echo -n "[  "
95        $SETCOLOR_SUCCESS
96        echo -n "OK"
97        $SETCOLOR_NORMAL
98        echo -n "  ]"
99        echo -ne "\r"
100        echo ""
101}
102
103echo_failure() {
104        $MOVE_TO_COL
105        echo -n "["
106        $SETCOLOR_FAILURE
107        echo -n "FAILED"
108        $SETCOLOR_NORMAL
109        echo -n "]"
110        echo -ne "\r"
111        echo ""
112}
113
114
115# echo OK in green if is success, FAILED in red is failed
116generic_end()
117{
118        if [ $RETVAL -eq 0 ];
119        then
120                echo_success
121        else
122                echo_failure
123        fi
124}
125
126log_stat_msg () {
127case "$1" in
128        0)
129        echo "Service $NAME: Running";
130        ;;
131        1)
132        echo "Service $NAME: Stopped and /var/run pid file exists";
133        ;;
134        3)
135        echo "Service $NAME: Stopped";
136        ;;
137        *)
138        echo "Service $NAME: Status unknown";
139        ;;
140esac
141}
142
143
144case "$1" in
145  start)
146        #
147        # Remove a stale PID file, if found
148        #
149        if test -f ${PIDFILE}; then
150            /bin/rm -f ${PIDFILE}
151        fi
152        #
153        case "$DISTRO" in
154        debian)
155                echo -n "Starting ${NAME}"
156                ( /sbin/start-stop-daemon --start --oknodo --quiet --exec $DAEMON )
157                RETVAL=$?
158                debian_end
159                ;;
160        redhat)
161                if [ -f /etc/sysconfig/${NAME} ]; then
162                       . /etc/sysconfig/${NAME}
163                fi
164                echo -n $"Starting ${NAME}: "
165                if [ -n "$OPTIONS" ]; then
166                        daemon $DAEMON $OPTIONS
167                else
168                        daemon $DAEMON
169                fi
170                RETVAL=$?
171                [ $RETVAL -eq 0 ] && touch /var/lock/subsys/${NAME}
172                echo
173                ;;
174        suse)
175                echo -n "Starting service ${NAME}"
176                /sbin/startproc $DAEMON
177                RETVAL=$? 
178                if [ $RETVAL -eq 0 ]; then
179                        return=$rc_done
180                else
181                        return=$rc_failed
182                fi
183                echo -e "$return"
184                ;;
185        *)
186                echo -n "Starting ${NAME} ... "
187                $DAEMON start
188                RETVAL=$?
189                generic_end
190                ;;
191        esac
192        exit $RETVAL
193        ;;
194
195  stop)
196        case "$DISTRO" in
197        debian)
198                echo -n "Stopping $NAME"
199                ( /sbin/start-stop-daemon --stop --oknodo --quiet --exec $DAEMON )
200                RETVAL=$? 
201                debian_end
202                ;;
203        redhat)
204                echo -n $"Stopping ${NAME}: "
205                killproc ${NAME}
206                RETVAL=$? 
207                rm -f /var/lock/subsys/${NAME}
208                echo
209                ;;
210        suse)
211                echo -n "Shutting down service ${NAME}"
212                /sbin/killproc -TERM $DAEMON
213                RETVAL=$? 
214                if [ $RETVAL -eq 0 ]; then
215                        return=$rc_done
216                else
217                        return=$rc_failed
218                fi
219                echo -e "$return"
220                ;;
221        *)
222                if test x"$VERBOSE" != xno; then
223                    echo -n "Stopping ${NAME} ... "
224                fi
225                $DAEMON stop
226                RETVAL=$?
227                generic_end
228                ;;
229        esac
230        #
231        # Remove a stale PID file, if found
232        #
233        if test -f ${PIDFILE}; then
234            /bin/rm -f ${PIDFILE}
235        fi
236        if test -S @mylockdir@/${NAME}.sock; then
237            /bin/rm -f @mylockdir@/${NAME}.sock
238        fi
239        ;;
240
241  restart)
242        $0 stop
243        sleep 3
244        $0 start
245        RETVAL=$?
246        ;;
247
248  reload|force-reload)
249        case "$DISTRO" in
250        debian)
251                echo -n "Reloading $NAME configuration files"
252                ( /sbin/start-stop-daemon --stop --signal 1 --quiet --exec $DAEMON )
253                RETVAL=$?
254                debian_end
255                ;;
256        redhat)
257                echo -n $"Reloading ${NAME} configuration: "
258                killproc ${NAME} -HUP
259                RETVAL=$?
260                echo
261                ;;
262        suse)
263                echo -n "Reload service ${NAME}"
264                /sbin/killproc -HUP $DAEMON
265                RETVAL=$? 
266                if [ $RETVAL -eq 0 ]; then
267                        return=$rc_done
268                else
269                        return=$rc_failed
270                fi
271                echo -e "$return"
272                ;;
273        *)
274                echo -n "Reloading ${NAME} ... "
275                $DAEMON reload
276                RETVAL=$?
277                generic_end
278                ;;
279        esac
280        ;;
281
282  status)
283        case "$DISTRO" in
284        redhat)
285                status ${NAME}
286                exit $?
287                ;;
288        suse)
289                echo -n "Checking for service ${NAME}: "
290                /sbin/checkproc $DAEMON
291                RETVAL=$? 
292                if [ $RETVAL -eq 0 ]; then
293                        return="OK"
294                else
295                        return="No process"
296                fi
297                echo "$return"
298                exit $RETVAL
299                ;;
300        *)
301                $DAEMON status
302                ERRNUM=$?
303                log_stat_msg ${ERRNUM}
304                exit ${ERRNUM}
305                ;;
306        esac
307        ;;
308
309  *)
310        echo "$0 usage: {start|stop|status|restart|reload}"
311        exit 1
312        ;;
313esac
314
315exit $RETVAL
Note: See TracBrowser for help on using the repository browser.