File: //opt/microsoft/scx/bin/uninstall
#!/bin/sh
uninstallMode=R
if [ -n "$1" ]; then
uninstallMode=$1
fi
if [ "$2" = "force" ]; then
dpkgForce="--force-all"
rpmForce="--nodeps"
fi
PATH=/usr/bin:/usr/sbin:/bin:/sbin
umask 022
PF_FILE_PATH=/etc/opt/microsoft/scx/pf_file.sh
if [ ! -f $PF_FILE_PATH ]; then
echo "Error: package file $PF_FILE_PATH does not exist. Unable to uninstall."
exit 1
fi
. $PF_FILE_PATH
which dpkg 1> /dev/null 2> /dev/null
DPKG_EXISTS=$?
cleanup_and_exit()
{
if [ "$PLATFORM" = "SunOS" ]; then
rm -f scx-admin scx-admin-upgrade
rm -f /tmp/.ai.pkg.zone.lock*
fi
if [ -n "$1" ]; then
exit $1
else
exit 0
fi
}
# $1 - The package name of the package to be uninstalled
# $2 - Optional parameter. Only used when forcibly removing omi on SunOS
pkg_rm() {
echo "----- Removing package: $1 -----"
case "$PF" in
Linux)
case "$PF_DISTRO" in
ULINUX)
if [ "$DPKG_EXISTS" -eq 0 ]; then
if [ "$uninstallMode" = "P" ]; then
dpkg --purge $1 # 1> /dev/null 2> /dev/null
else
dpkg --remove $dpkgForce $1 # 1> /dev/null 2> /dev/null
fi
else
rpm --erase $rpmForce $1 # 1> /dev/null 2> /dev/null
fi
;;
REDHAT|SUSE)
rpm --erase $rpmForce $1 # 1> /dev/null 2> /dev/null
;;
UBUNTU)
if [ "$uninstallMode" = "P" ]; then
dpkg --purge $1 # 1> /dev/null 2> /dev/null
else
dpkg --remove $dpkgForce $1 # 1> /dev/null 2> /dev/null
fi
;;
*)
echo "Unsupported Linux platform: $PF_DISTRO"
;;
esac
;;
AIX)
/usr/sbin/installp -u $1.rte # 1> /dev/null 2> /dev/null
;;
HPUX)
/usr/sbin/swremove $1 # 1> /dev/null 2> /dev/null
;;
SunOS)
/usr/sbin/pkgrm -a scx-admin -n MSFT$1 # 1> /dev/null 2> /dev/null
;;
*)
echo "Unsupported platform: $PF"
;;
esac
}
service_action_delay()
{
case "$PF_MINOR" in
10|11)
COUNT=0
while [ $COUNT -lt 15 ]; do
/usr/bin/svcs -H $1 2> /dev/null | grep -i $2 2> /dev/null 1> /dev/null
[ $? -eq 0 ] && break
echo "Waiting for service: $1 ..."
sleep 2
COUNT=`expr $COUNT + 1`
done
;;
esac
}
stop_omiserver() {
if [ -f /opt/omi/bin/service_control ]; then
/opt/omi/bin/service_control stop
return $?
fi
if [ -f /var/opt/omi/run/omiserver.pid ]; then
case "$PF" in
AIX)
stopsrc -s omiserverd
;;
Linux)
case "$PF_DISTRO" in
UBUNTU|ULINUX)
if [ -x /usr/sbin/invoke-rc.d ]; then
invoke-rc.d omiserverd stop
elif [ -x /sbin/service ]; then
service omiserverd stop
else
echo "Unrecognized Service Controller to stop OMI Service."
cleanup_and_exit 1
fi
;;
SUSE)
case "$PF_MAJOR" in
9)
/etc/init.d/omiserverd stop
;;
*)
service omiserverd stop
;;
esac
;;
REDHAT)
service omiserverd stop
;;
esac
;;
HPUX)
$OMI_HOME/bin/omiserver -s
;;
SunOS)
case "$PF_MINOR" in
9)
$OMI_HOME/bin/omiserver -s
;;
10|11)
svcs -l omiserverd 2> /dev/null 1> /dev/null
if [ $? -eq 0 ]; then
svcadm disable -s svc:/application/management/omiserverd
service_action_delay svc:/application/management/omiserverd disabled
fi
;;
esac
;;
esac
fi
}
start_omiserver() {
if [ -f /opt/omi/bin/service_control ]; then
/opt/omi/bin/service_control start
return $?
fi
case "$PF" in
AIX)
startsrc -s omiserverd -e "LD_LIBRARY_PATH=$OMI_HOME/lib"
;;
Linux)
case "$PF_DISTRO" in
UBUNTU|ULINUX)
if [ -x /usr/sbin/invoke-rc.d ]; then
invoke-rc.d omiserverd start
elif [ -x /sbin/service ]; then
service omiserverd start
else
echo "Unrecognized Service Controller to start SCX Service"
cleanup_and_exit 1
fi
;;
SUSE)
case "$PF_MAJOR" in
9)
/etc/init.d/omiserverd start
;;
*)
service omiserverd start
;;
esac
;;
REDHAT)
service omiserverd start
;;
esac
;;
HPUX)
/opt/omi/bin/omiserver -d
;;
SunOS)
case "$PF_MINOR" in
9)
/opt/omi/bin/omiserver -d
;;
10|11)
svcs -H omiserverd 2> /dev/null | grep -i online 2> /dev/null 1> /dev/null
if [ $? -eq 0 ]; then
return
fi
service_action_delay svc:/application/management/omiserverd disabled
svcadm enable -s svc:/application/management/omiserverd
;;
esac
;;
esac
}
# Create installation administrative file for Solaris platform if needed
if [ "$PF" = "SunOS" ]; then
echo "mail=" > scx-admin
echo "instance=overwrite" >> scx-admin
echo "partial=nocheck" >> scx-admin
echo "idepend=quit" >> scx-admin
echo "rdepend=quit" >> scx-admin
echo "conflict=nocheck" >> scx-admin
echo "action=nocheck" >> scx-admin
echo "basedir=default" >> scx-admin
fi
echo "Removing cross-platform agent(s) ..."
# First remove any bundled agents
BUNDLE_EXIT_STATUS="0"
for i in /opt/microsoft/*-cimprov; do
PKG_NAME=`basename $i`
if [ "$PKG_NAME" != "*-cimprov" ]; then
pkg_rm ${PKG_NAME}
TEMP_STATUS=$?
[ $TEMP_STATUS -ne 0 ] && BUNDLE_EXIT_STATUS="$TEMP_STATUS"
fi
done
# Now remove actual SCX/OMI agents
pkg_rm scx
SCX_EXIT_STATUS=$?
pkg_rm omi
OMI_EXIT_STATUS=$?
if [ $OMI_EXIT_STATUS -ne 0 ]; then
# Unable to uninstall omi. This is most likely due to another dependency on omi. In this case, we should restart omi
stop_omiserver
start_omiserver
fi
if [ "$SCX_EXIT_STATUS" -ne "0" -o "$BUNDLE_EXIT_STATUS" -ne "0" ]; then
cleanup_and_exit 1
else
cleanup_and_exit 0
fi