diff options
Diffstat (limited to 'scripts/ipmiutil_asy')
-rwxr-xr-x | scripts/ipmiutil_asy | 155 |
1 files changed, 155 insertions, 0 deletions
diff --git a/scripts/ipmiutil_asy b/scripts/ipmiutil_asy new file mode 100755 index 0000000..2899af4 --- /dev/null +++ b/scripts/ipmiutil_asy @@ -0,0 +1,155 @@ +#! /bin/sh +# +# ipmiutil_asy init script +# +# chkconfig: - 91 59 +# description: ipmiutil async bridge agent, listens for IPMI LAN client requests +# +# This starts a daemon that listens for asynchronous IPMI LAN soft-shutdown +# requests from a remote ipmiutil reset (-o/-D). It depends upon an imb or +# openipmi driver. +# +### BEGIN INIT INFO +# Provides: ipmiutil_asy +# Required-Start: $local_fs $remote_fs $syslog +# Required-Stop: $local_fs $remote_fs $syslog +# Default-Start: 3 4 5 3 4 5 +# Default-Stop: 0 1 2 6 0 1 2 6 +# Short-Description: ipmiutil async bridge agent init script +# Description: Init script starts ipmiutil async bridge agent for remote reset +### END INIT INFO +# + +#if [ -f /etc/init.d/functions ]; then +# Source function library. +#. /etc/init.d/functions +#fi + +name="ipmiutil_asy" +dname="ipmiutil_asy bridge agent" +getevtlog=/var/log/${name}.log +lockfile=/var/lock/subsys/${name} +prog=/usr/bin/ipmiutil + + +getpid () { + p=`ps -ef |grep "$1" |grep -v grep |awk '{print $2}'` + echo $p +} + +start() +{ + echo -n $"Starting $dname: " + driverok=0 + dtype=`ipmiutil cmd -k |grep "IPMI access" |cut -f2 -d'=' |awk '{ print $1 }'` + if [ "x$dtype" = "xopen" ]; then + driverok=1 + fi + if [ "x$dtype" = "ximb" ]; then + driverok=1 + fi + if [ $driverok -eq 1 ] + then + [ -x $prog ] || exit 5 + $prog getevt -a -b >$getevtlog & + retval=$? + PID=$! + if [ $retval -eq 0 ]; then + echo $PID >$lockfile + fi + else + echo "No imb or ipmi driver loaded, aborting." + retval=1 + fi + echo + return $retval +} + +stop() +{ + echo -n $"Stopping $dname: " + retval=1 + if [ -f $lockfile ]; then + p=`cat $lockfile` + if [ "x$p" = "x" ]; then + p=`getpid "$prog getevt -a"` + fi + if [ "x$p" != "x" ]; then + kill $p + retval=$? + fi + fi + echo + [ $retval -eq 0 ] && rm -f $lockfile + return $retval +} + +restart() { + stop + start +} + + +rh_status() { + if [ -f $lockfile ]; then + p=`cat $lockfile` + if [ "x$p" != "x" ]; then + pid=`getpid $p` + if [ "x$pid" != "x" ]; then + echo "$dname (pid $pid) is running..." + retval=0 + else + echo "$dname is dead but $lockfile exists" + retval=1 + fi + else + echo "$dname $lockfile exists but is empty" + retval=1 + fi + else + echo "$dname is stopped" + retval=3 + fi + return $retval +} + +rh_status_q() { + rh_status >/dev/null 2>&1 +} + +if [ ! -d /var/lock/subsys ]; then + lockfile=/var/run/${name}.pid +fi + +case "$1" in + start) + rh_status_q && exit 0 + start + ;; + stop) + rh_status_q || exit 0 + stop + ;; + restart) + restart + ;; + reload) + rh_status_q || exit 7 + restart + ;; + force-reload) + restart + ;; + status) + rh_status + ;; + condrestart|try-restart) + rh_status_q || exit 0 + restart + ;; + *) + echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload}" + exit 2 +esac +exit $? + |