Files
build.ems/extra/tools/sas_snmp_install/lsi_mrdsnmpd.rh
2024-10-19 16:29:21 +08:00

165 lines
3.1 KiB
Bash

#!/bin/sh
#chkconfig: 2345 55 80
#description: LSI SNMP Agent startup/shutdown script
#Source function library.
. /etc/init.d/functions
megadevice="megasnmp"
agent="/usr/sbin/lsi_mrdsnmpagent"
agent_name="lsi_mrdsnmpagent"
pidfile="mrdsnmpd"
vendor="LSI SNMP"
RETVAL=0
SNMPDCONF=/etc/snmp/snmpd.conf
#A function to stop a program.
statuscheck() {
local base=${1}
local pid
# Test syntax.
if [ "$#" = 0 ] ; then
echo $"Usage: status {program}"
return 1
fi
# First try "pidof"
pid=`pidof -o $$ -o $PPID -o %PPID -x $1 || \
pidof -o $$ -o $PPID -o %PPID -x ${base}`
if [ -n "$pid" ]; then
echo $"${base} (pid $pid) is running..."
return 0
fi
# Next try "/var/run/*.pid" files
if [ -f /var/run/${base}.pid ] ; then
read pid < /var/run/${base}.pid
if [ -n "$pid" ]; then
echo $"${base} dead but pid file exists"
return 1
fi
fi
# See if /var/lock/subsys/${base} exists
if [ -f /var/lock/subsys/${base} ]; then
echo $"${base} dead but subsys locked"
return 2
fi
echo $"${base} is stopped"
return 3
}
mykillproc()
{
RC=0
# Test syntax.
if [ $# = 0 ]; then
echo "Usage: killproc {program} [signal]"
return 1
fi
notset=0
# check for second arg to be kill level
if [ "$2" != "" ] ; then
killlevel=$2
else
notset=1
killlevel="-9"
fi
# Save basename.
base=`basename $1`
# Find pid.
pid=`pidof $1 | cut -f1 -d" "`
# Kill it.
if [ "$pid" != "" ] ; then
[ "$BOOTUP" = "verbose" ] && echo -n "$base "
if [ "$notset" = "1" ] ; then
if ps h $pid >/dev/null 2>&1; then
# TERM first, then KILL if not dead
kill -TERM $pid
usleep 200000
if ps h $pid >/dev/null >/dev/null 2>&1 ; then
sleep 1
if ps h $pid >/dev/null >/dev/null 2>&1 ; then
sleep 3
if ps h $pid >/dev/null >/dev/null 2>&1 ; then
kill -KILL $pid
usleep 200000
fi
fi
fi
fi
ps h $pid >/dev/null >/dev/null 2>&1
RC=$?
[ $RC -eq 0 ] && failure "$base shutdown" || success "$base shutdown"
RC=$((! $RC))
# use specified level only
else
if ps h $pid >/dev/null >/dev/null 2>&1; then
kill $killlevel $pid
RC=$?
[ $RC -eq 0 ] && success "$base $killlevel" || failure "$base $killlevel"
fi
fi
else
failure "$base shutdown"
fi
# Remove pid file if any.
if [ "$notset" = "1" ]; then
rm -f /var/run/$base.pid
fi
return $RC
}
start()
{
echo -n "Starting $vendor Agent:"
spid=`pidof snmpd`
if [ "$spid" = "" ] ; then
if [ -x /etc/init.d/snmpd ] ; then
/etc/init.d/snmpd start
else
echo SNMP Daemon not started
fi
fi
daemon ${agent} -c ${SNMPDCONF}
echo
}
stop()
{
echo -n "Stopping $vendor Agent:"
killproc ${agent}
echo
return 0
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart|reload)
$0 stop
$0 start
;;
status)
statuscheck ${agent_name}
RETVAL=$?
;;
*)
echo "$vendor Agent is not Started/Stopped"
echo "Usage: $0 {start|stop|restart|status}"
exit 1
esac
exit $RETVAL