This file is indexed.

/etc/init.d/mpt-statusd is in mpt-status 1.2.0-8+b1.

This file is owned by root:root, with mode 0o755.

The actual contents of the file can be viewed below.

  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
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
#! /bin/sh

# Author: Petter Reinholdtsen <pere@hungry.com>
# License: GNU General Public License v2 or later
#
### BEGIN INIT INFO
# Provides:          mpt-statusd
# Description:       Fusion MPT RAID controller diagnostic tool
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Check mpt-status values in the background.
### END INIT INFO

PATH=/sbin:/bin:/usr/sbin:/usr/bin
DESC="mpt-status monitor"
NAME=mpt-statusd
PIDFILE=/var/run/$NAME.pid
STATUSFILE=/var/run/$NAME.status
SCRIPTNAME=/etc/init.d/$NAME


# Do not touch you can configure this in /etc/default/mpt-statusd
MAILTO=root   # Where to report problems
PERIOD=600    # Seconds between each check    (default 10 minutes)
REMIND=7200   # Seconds between each reminder (default 2 hours)
RUN_DAEMON=yes
ID=0

[ -e /etc/default/mpt-statusd ] && . /etc/default/mpt-statusd

# Gracefully exit if the package has been removed.
test -x /usr/sbin/mpt-status || exit 0

. /lib/lsb/init-functions
[ -e /etc/default/rcS ] && . /etc/default/rcS

if [ $RUN_DAEMON = "no" ] ; then
	log_begin_msg "mpt-statusd is disabled in /etc/default/mpt-statusd, not starting."
    	log_end_msg 0
	exit 0
fi

check_mpt() {
    echo $$ > $PIDFILE.new && mv $PIDFILE.new $PIDFILE
    while true ; do
        # Check ever $PERIOD seconds, send email on every status
        # change and repeat ever $REMIND seconds if the raid is still
        # bad.
        if (mpt-status -i $ID) |grep -q 'state OPTIMAL' ; then
            BADRAID=false
        else
            BADRAID=true
            logger -t mpt-statusd "detected non-optimal RAID status"
        fi
        STATUSCHANGE=false
        if [ true = "$BADRAID" ] ; then
            # RAID not OK
            (mpt-status -i $ID) > $STATUSFILE.new
            if [ ! -f $STATUSFILE ] ; then # RAID just became broken
                STATUSCHANGE=true
                mv $STATUSFILE.new $STATUSFILE
            elif cmp -s $STATUSFILE $STATUSFILE.new ; then
                # No change.  Should we send reminder?
                LASTTIME="`stat -c '%Z' $STATUSFILE`"
                NOW="`date +%s`"
                SINCELAST="`expr $NOW - $LASTTIME`"
                if [ $REMIND -le "$SINCELAST" ]; then
                    # Time to send reminder
                    STATUSCHANGE=true
                    mv $STATUSFILE.new $STATUSFILE
                else
                    rm $STATUSFILE.new
                fi
            else
                STATUSCHANGE=true
                mv $STATUSFILE.new $STATUSFILE
            fi
        else
            # RAID OK
            if [ -f $STATUSFILE ] ; then
                rm $STATUSFILE
                STATUSCHANGE=true
            fi
        fi
                
        if [ true = "$STATUSCHANGE" ]; then
            hostname="`uname -n`"
            (
                cat <<EOF 
This is a RAID status update from mpt-statusd.  The mpt-status
program reports that one of the RAIDs changed state:

EOF
                if [ -f $STATUSFILE ] ; then
                    cat $STATUSFILE
                else
                    (mpt-status -i $ID)
                fi
                echo
                echo "Report from $0 on $hostname"
            ) | mail -s "info: mpt raid status change on $hostname" $MAILTO
        fi
	sleep $PERIOD &
	# Kill sleep if we're signaled to exit, otherwise we will stay defunct
	# until sleep terminates.
	trap "kill $!; exit" TERM
	wait $!
	trap - TERM
    done
}

check_daemon() {
        # Let's check if there is a daemon which is really running and not timing out
        DAEMON_RUN=`ps aux | grep "/etc/init.d/mpt-statusd check_mpt" | grep -v grep | grep -v daemon`
        if [ -n "$DAEMON_RUN" ] ; then
                return 1;
        else
                return 0;
        fi
}

#
#       Function that starts the daemon/service.
#
d_start() {
    [ -f $PIDFILE ] && PID="`cat $PIDFILE`"
    if [ "$PID" ] ; then
        log_progress_msg "Daemon already running. Refusing to start another"
        return 0
    elif check_daemon ; then
        # Use the daemon package to turn this script into a daemon
        start-stop-daemon --start --quiet --pidfile $PIDFILE \
                --oknodo --exec /usr/bin/daemon /usr/bin/daemon $SCRIPTNAME check_mpt
	return 0
    else
        log_progress_msg "Daemon is already running. Refusing to start another"
        return 0
    fi
}

#
#       Function that stops the daemon/service.
#
d_stop() {
        if [ -f $PIDFILE ] ; then
             	start-stop-daemon --stop --oknodo --quiet --pidfile $PIDFILE > /dev/null 2>&1 
		rm -f $PIDFILE
        else
                log_progress_msg "Daemon is already stopped."
                return 0
        fi
}

# This is a workaround function which does not directly exit and
# therefore can be used by a restart
d_stop_by_restart() {
        if [ -f $PIDFILE ] ; then
                start-stop-daemon --oknodo --stop --quiet --pidfile $PIDFILE
                rm -f $PIDFILE
                log_end_msg 0
        else
                log_progress_msg "Daemon is already stopped."
                log_end_msg 0
        fi
}

case "$1" in
  start)
	if ! [ -e "/dev/mptctl" ] ; then
		modprobe -q mptctl 2>/dev/null
		if [ $? -ne 0 ]; then
			log_failure_msg "Starting $DESC: failed to load mptctl."
			exit 1
		fi
	fi
        log_begin_msg "Starting $DESC: $NAME"
        d_start ; CODE=$?
        log_end_msg $CODE
        ;;
  stop)
        log_begin_msg "Stopping $DESC: $NAME"
        d_stop ; CODE=$?
        log_end_msg $CODE
        ;;
  check_mpt)
        check_mpt
        ;;
  status)
	status_of_proc /usr/bin/daemon $NAME
	exit $?
	;;
  restart|force-reload)
        log_begin_msg "Restarting $DESC: $NAME"
        d_stop_by_restart
        sleep 1
        d_start || CODE=$?
        log_end_msg $CODE
        ;;
  *)
        # echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
        echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
        exit 1
        ;;
esac

exit 0