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 $? + | 
