CIMOM daemon recovery

Fujitsu.Servers.PRIMERGY.Linux.CimManagement.Recovery (Recovery)

Recovers the CIMOM daemon (SFCB or OpenPegasus) process using a shell script (start/restart if necessary)

Element properties:

TargetFujitsu.Servers.PRIMERGY.Linux.CimManagement
MonitorFujitsu.Servers.PRIMERGY.Linux.Cim.ShellScript.LessThan.ThreeState.Monitor
Reset MonitorFalse
RemotableTrue
Timeout300
CategoryCustom
Enabledtrue
AccessibilityPublic

Member Modules:

ID Module Type TypeId RunAs 
InvokeWA WriteAction Fujitsu.Servers.PRIMERGY.Linux.ShellScript.WriteAction Default

Source Code:

<Recovery ID="Fujitsu.Servers.PRIMERGY.Linux.CimManagement.Recovery" Accessibility="Public" Enabled="true" Target="Fujitsu.Servers.PRIMERGY.Linux.CimManagement" Monitor="Fujitsu.Servers.PRIMERGY.Linux.Cim.ShellScript.LessThan.ThreeState.Monitor" ResetMonitor="false" ExecuteOnState="Error" Remotable="true" Timeout="300">
<Category>Custom</Category>
<WriteAction ID="InvokeWA" TypeID="Fujitsu.Servers.PRIMERGY.Linux.ShellScript.WriteAction">
<TargetSystem>$Target/Property[Type="Fujitsu.Servers.PRIMERGY.Linux.ManagementClientSoftware"]/NetworkName$</TargetSystem>
<ShScriptName>CimomRecovery.sh</ShScriptName>
<ShScriptBody>#!/bin/sh
# Fujitsu
# Copyright 2014-2019 FUJITSU LIMITED
#
# CimomRecovery.sh - script to start/restart sfcb/tog-pegasus daemon

SCRIPTLOG="/tmp/Fujitsu/$0.log"

# arguments check
LISTENPORT=`echo $1 | awk '{print tolower($0)}'`
DBG=`echo $2 | awk '{print tolower($0)}'`
[ "$DBG" = "dbg" ] &amp;&amp; echo "Running $0 in debug mode"

# In DEBUG mode: generate some files under "/tmp" to see, the script is running
if [ "$DBG" = "dbg" ]
then
mkdir -p /tmp/Fujitsu/
tail $SCRIPTLOG 2&gt;/dev/null &gt; $SCRIPTLOG.bk
mv -f $SCRIPTLOG.bk $SCRIPTLOG
echo "$0 V__MP_VERSION__ last ran at `date`" &gt;&gt; $SCRIPTLOG
fi

EECD=`whereis eecd | awk 'NF&gt;1{print $2}'`
if [ "$EECD" = "" ]
then
# either not a system from FUJITSU or no ServerView agents installed - do nothing!
[ "$DBG" = "dbg" ] &amp;&amp; echo "Not a system from FUJITSU or ServerView Agents not installed."
exit 0
fi

# test that SFCB is installed
SFCB=`whereis sfcbd | awk 'NF&gt;1{print $2}'`
PEGASUS=""
if [ "$SFCB" = "" ]
then
# test that OpenPegasus is installed
PEGASUS=`whereis cimserver | awk 'NF&gt;1{print $2}'`
if [ "$PEGASUS" = "" ]
then
echo "SFCB or OpenPegasus is required! Cannot recover."
exit 0
else
[ "$DBG" = "dbg" ] &amp;&amp; echo "OpenPegasus is installed at: $PEGASUS"
fi
else
[ "$DBG" = "dbg" ] &amp;&amp; echo "SFCB is installed at: $SFCB"
fi

if [ "$SFCB" != "" ]
then
SERVICE=`ls -1 /etc/init.d/ /usr/lib/systemd/system/ 2&gt;/dev/null | grep -i sfcb | sed "s/.service//" | head -n 1`

# test that SFCB is running
SFCBRUNNING=`ps -A | grep -i '[s]fcb'`
if [ "$SFCBRUNNING" = "" ]
then
echo "SFCB is not running, starting"
service $SERVICE start
exit 0
fi
[ "$DBG" = "dbg" ] &amp;&amp; echo "SFCB is running"

# test that SFCB is listening
SFCBLISTEN=`netstat -nlx | grep -i sfcb`
if [ "$SFCBLISTEN" = "" ]
then
echo "SFCB is not listening, restarting"
service $SERVICE restart
exit 0
fi
[ "$DBG" = "dbg" ] &amp;&amp; echo "SFCB is listening"
fi

if [ "$PEGASUS" != "" ]
then
SERVICE=`ls -1 /etc/init.d/ /usr/lib/systemd/system/ 2&gt;/dev/null | grep -i tog-pegasus | sed "s/.service//" | head -n 1`

# test that OpenPegasus is running
PEGASUSRUNNING=`ps -A | grep -i '[c]imserver'`
if [ "$PEGASUSRUNNING" = "" ]
then
echo "OpenPegasus is not running, starting"
service $SERVICE start
exit 0
fi
[ "$DBG" = "dbg" ] &amp;&amp; echo "OpenPegasus is running"

# test that OpenPegasus is listening
PEGASUSLISTEN=`netstat -nlx | grep -i tog-pegasus`
if [ "$PEGASUSLISTEN" = "" ]
then
echo "OpenPegasus is not listening, restarting"
service $SERVICE restart
exit 0
fi
[ "$DBG" = "dbg" ] &amp;&amp; echo "OpenPegasus is listening"
fi

CIMOMLISTENP=`netstat -vltn | grep $LISTENPORT`
if [ "$CIMOMLISTENP" = "" ]
then
echo "Nothing is listening on port $LISTENPORT, restarting"
service $SERVICE restart
exit 0
fi
[ "$DBG" = "dbg" ] &amp;&amp; echo "Port $LISTENPORT is in LISTEN state"
[ "$DBG" = "dbg" ] &amp;&amp; echo "Nothing to do"

exit 0
</ShScriptBody>
<ScriptArguments>3_chars_DBG_for_DEBUG</ScriptArguments>
<Timeout>60</Timeout>
<UserName>$RunAs[Name="Unix!Microsoft.Unix.PrivilegedAccount"]/UserName$</UserName>
<Password>$RunAs[Name="Unix!Microsoft.Unix.PrivilegedAccount"]/Password$</Password>
</WriteAction>
</Recovery>