File: //opt/OV/bin/OpC/opcagt
#!/bin/sh
# OPC_WHAT_STRING="@(#)HP Operations agent 12.05.006 (2017-11-16_1500)"
###############################################################################
#
# File: opcagt
# Description: Control Script to start/stop local OpC services
# on Managed Node
# Language: Bourne Shell
# Package: HP OpenView OperationsCenter
#
# (c) Copyright 1993 - 2017 Hewlett-Packard Development Company, L.P.
#
###############################################################################
#
# chkconfig: 2345 95 09
# description: VantagePoint/Operations agent
#
CMD=$0
# Avoid being killed by cluster scripts trying to unmount shared volumes:
# cd to some safe place - this will also be the default location for any core dumps
cd /tmp
#==============================================================================
#
# DESCRIPTION
# This function checks value of OPC_LANG parameter and substitus its
# value to supported one.
#
# PARAMETERS
#
# EXIT CODE
# 0 .. OK
# 1 .. ERROR can't stop opc
#
inst_lang_check ()
{
# MAP_LANG variable is used for mapping LANG value from server specified
# value to value which is correct on target node
# line syntax: <correct_value> : <possible_server_value>..
MAP_LANG="C : English iso88591 ascii C
ja_JP : Japanese sjis"
AWK=awk
NEW_OPC_LANG=`echo "$MAP_LANG" | \
$AWK '{
for ( i = 3; i <= NF; i++ ) {
if ( $i == lang ) { print $1; exit 0}
}
}' lang=$OPC_LANG`
if [ -z "$NEW_OPC_LANG" ]
then
NEW_OPC_LANG=C
fi
OPC_LANG="$NEW_OPC_LANG"
unset NEW_OPC_LANG AWK
}
BIN_DIR=/usr/bin
OS_DIR=/usr
OPT_DIR=/opt
VAR_DIR=/var/opt
ETC_DIR=/etc/opt
# localization
LANG_C=C
# for agents we may need a different root directory e.g. in a cluster
# environment else it is the root directory
#
ROOT_DIR=${ROOT_DIR:-""}
# defined in every script - the version of this script
INST_OPCVERS=12.05.006
# prerequisites:
#---------------
#
# the paths
#
# OPT_DIR e.g. /opt
# VAR_DIR e.g. /var/opt
# ETC_DIR e.g. /etc/opt
#
# must be defined before using this module
#
# Naming Scheme
# <prog>_<name>_DIR 1 directory e.g. OV_<name>_DIR, OPC_<name>_DIR
# <name>_PATH several directories delimited by ":"
#
TMP_DIR=${ROOT_DIR}/tmp/opc_tmp
#-------------------------------------
# generic paths
#-------------------------------------
# /opt/OV
OV_OPT_DIR=${OV_OPT_DIR:-${ROOT_DIR}${OPT_DIR}/OV}
PERF_OPT_DIR=${PERF_OPT_DIR:-${ROOT_DIR}${OPT_DIR}/perf}
OPC_OPT_DIR=${OPC_OPT_DIR:-${OV_OPT_DIR}}
# /var/opt/OV
OV_VAR_DIR=${OV_VAR_DIR:-${ROOT_DIR}${VAR_DIR}/OV}
OV_VAR_SH_DIR=${OV_VAR_SH_DIR:-${OV_VAR_DIR}/share}
OPC_VAR_DIR=${OPC_VAR_DIR:-${OV_VAR_DIR}}
# /etc/opt/OV
OV_ETC_DIR=${OV_ETC_DIR:-${ROOT_DIR}${ETC_DIR}/OV}
OV_ETC_SH_DIR=${OV_ETC_SH_DIR:-${OV_ETC_DIR}/share}
OPC_ETC_DIR=${OPC_ETC_DIR:-${OV_ETC_DIR}/share}
OV_NEWCFG_DIR=${OV_NEWCFG_DIR:-${OV_OPT_DIR}/newconfig}
OV_OLDCFG_DIR=${OV_OLDCFG_DIR:-${OV_OPT_DIR}/old}
# WWW
OV_WWW_DIR=$OV_OPT_DIR/www
# /opt/OV
OV_OPT10_DIR=${OV_OPT10_DIR:-${ROOT_DIR}${OPT10_DIR}/OV}
# /var/opt/OV
OV_VAR10_DIR=${OV_VAR10_DIR:-${ROOT_DIR}${VAR10_DIR}/OV}
OV_VAR10_SH_DIR=${OV_VAR10_SH_DIR:-${OV_VAR10_DIR}/share}
# /etc/opt/OV
OV_ETC10_DIR=${OV_ETC10_DIR:-${ROOT_DIR}${ETC10_DIR}/OV}
OV_ETC10_SH_DIR=${OV_ETC10_SH_DIR:-${OV_ETC10_DIR}/share}
#-------------------------------------
# OpenView paths
#-------------------------------------
OV_BIN_DIR=${OV_BIN_DIR:-${OV_OPT_DIR}/bin}
OV_TMP_DIR=${OV_TMP_DIR:-${OV_VAR_DIR}/tmp}
OV_LOG_DIR=${OV_LOG_DIR:-${OV_VAR_DIR}/log}
OV_CFG_DIR=${OV_CFG_DIR:-${OV_ETC_DIR}/share/conf}
OV_ALT_CFG_DIR=${OV_ALT_CFG_DIR:-${OV_ETC_DIR}/share/\#conf}
PERF_BIN_DIR=${PERF_BIN_DIR:-${PERF_OPT_DIR}/bin}
#-------------------------------------
# ITO Server Paths
#-------------------------------------
# /usr/OV/bin/OpC
OPCSVR_BIN_DIR=${OPCSVR_BIN_DIR:-${OPC_OPT_DIR}/bin/OpC}
# /usr/OV/bin/OpC/install
OPCSVR_INST_DIR=${OPCSVR_INST_DIR:-${OPCSVR_BIN_DIR}/install}
# /opt/OV/lib
OPCSVR_LIB_DIR=${OPCSVR_LIB_DIR:-${OPC_OPT_DIR}/lib}
# /opt/OV/nls
OPCSVR_NLS_DIR=${OPCSVR_NLS_DIR:-${OPCSVR_LIB_DIR}/nls}
# /opt/OV/include
OPCSVR_INC_DIR=${OPCSVR_INC_DIR:-${OPC_OPT_DIR}/include}
# /usr/OV/bin/OpC/utils
OPCSVR_UTIL_DIR=${OPCSVR_UTIL_DIR:-${OPCSVR_BIN_DIR}/utils}
# /usr/OV/bin/OpC/agtinstall
OPCSVR_AGTINST_DIR=${OPCSVR_AGTINST_DIR:-${OPCSVR_BIN_DIR}/agtinstall}
# /etc/opt/OV/share/lrf
OPCSVR_OPC_DIR=${OPCSVR_OPC_DIR:-${OPC_OPT_DIR}/OpC}
OPCSVR_NEWCFG_DIR=${OPCSVR_NEWCFG_DIR:-${OV_NEWCFG_DIR}/OpC}
OPCSVR_OLDCFG_DIR=${OPCSVR_OLDCFG_DIR:-${OV_OLDCFG_DIR}/OpC}
OPCSVR_HELP_DIR=${OPCSVR_HELP_DIR:-${OV_VAR_DIR}/share/help}
# /etc/opt/OV directories
OPCSVR_LRF_DIR=${OPCSVR_LRF_DIR:-${OPC_ETC_DIR}/lrf}
OPCSVR_REG_DIR=${OPCSVR_REG_DIR:-${OPC_ETC_DIR}/registration}
# /var/opt/OV/share/databases
OPCSVR_DB_DIR=${OPCSVR_DB_DIR:-${OPC_VAR_DIR}/share/databases/OpC}
# /var/opt/OV/share/databases/OpC/mgd_node/vendor
OPCSVR_VEND_DIR=${OPCSVR_DB_DIR}/mgd_node/vendor
# /var/opt/OV/share/databases/OpC/mgd_node/customer
OPCSVR_CUST_DIR=${OPCSVR_DB_DIR}/mgd_node/customer
# dynamic paths
OPCSVR_TMP_DIR=${OPCSVR_TMP_DIR:-${OPC_VAR_DIR}/share/tmp/OpC}
OPCSVR_LOG_DIR=${OPCSVR_LOG_DIR:-${OPC_VAR_DIR}/log/OpC}
OPCSVR_CFG_DIR=${OPCSVR_CFG_DIR:-${OPC_ETC_DIR}/conf/OpC}
OPCSVR_APPL_DIR=${OPCSVR_APPL_DIR:-${OPC_VAR_DIR}/share/tmp/OpC_appl}
OPCSVR_MAN_DIR=${OPCSVR_MAN_DIR:-${OPC_OPT_DIR}/man}
OPCSVR_INFO_F=${OPCSVR_INFO_F:-${OPCSVR_INST_DIR}/opcsvinfo}
# Config file needed by distributed GUI client
OPC_GUICLT_MSV_F=${OPC_GUICLT_MSV_F:-${OV_CFG_DIR}/opc_guiclt_msv}
OPC_GUICLT_TMP_MSV_F=${OPC_GUICLT_TMP_MSV_F:-/tmp/opc_guiclt_msv}
# DB config file
OVDB_CONFIG_FILE=${OVDB_CONFIG_FILE:-${OV_CFG_DIR}/ovdbconf}
#-------------------------------------
# ITO Agent Paths
#-------------------------------------
# /usr/OV/bin/OpC/s700
OPCAGT_BIN_DIR=${OPCAGT_BIN_DIR:-${OPC_OPT_DIR}/bin/OpC}
OPCAGT_LIB_DIR=${OPCAGT_LIB_DIR:-${OPC_OPT_DIR}/lib}
OPCAGT_NLS_DIR=${OPCAGT_NLS_DIR:-${OPCAGT_LIB_DIR}/nls}
OPCAGT_INC_DIR=${OPCAGT_INC_DIR:-${OPC_OPT_DIR}/include}
# /usr/OV/bin/OpC/s700/utils
OPCAGT_UTIL_DIR=${OPCAGT_UTIL_DIR:-${OPCAGT_BIN_DIR}/utils}
# /usr/OV/bin/OpC/s700/install
OPCAGT_INST_DIR=${OPCAGT_INST_DIR:-${OPCAGT_BIN_DIR}/install}
# /var/opt/OV/bin/OpC
OPCAGT_ACTMONCMD_DIR=${OPCAGT_ACTMONCMD_DIR:-${OPC_VAR_DIR}/bin/OpC}
# /var/opt/OV/bin/OpC/monitor
OPCAGT_MON_DIR=${OPCAGT_MON_DIR:-${OPC_VAR_DIR}/bin/OpC/monitor}
# /opt/OV/bin/OpC/actions
OPCAGT_ACT_DIR=${OPCAGT_ACT_DIR:-${OPC_VAR_DIR}/bin/OpC/actions}
# /var/opt/OV/bin/OpC/cmds
OPCAGT_CMD_DIR=${OPCAGT_CMD_DIR:-${OPC_VAR_DIR}/bin/OpC/cmds}
# dynamic paths
OPCAGT_LOG_DIR=${OPCAGT_LOG_DIR:-${OPC_VAR_DIR}/log/OpC}
OPCAGT_CFG_DIR=${OPCAGT_CFG_DIR:-${OPC_VAR_DIR}/conf/OpC}
OPCAGT_TMP_DIR=${OPCAGT_TMP_DIR:-${OPC_VAR_DIR}/tmp/OpC}
OPCAGT_VARBIN_DIR=${OPCAGT_TMP_DIR:-${OPC_VAR_DIR}/bin/OpC}
OPCAGT_TMPBIN_DIR=${OPCAGT_TMPBIN_DIR:-${OPCAGT_TMP_DIR}/bin}
OPCAGT_TMPCFG_DIR=${OPCAGT_TMPCFG_DIR:-${OPCAGT_TMP_DIR}/conf}
OPCAGT_NEWCFG_DIR=${OPCAGT_NEWCFG_DIR:-${OV_NEWCFG_DIR}/OpC}
OPCAGT_OLDCFG_DIR=${OPCAGT_OLDCFG_DIR:-${OV_OLDCFG_DIR}/OpC}
# info files
OPCAGT_NDINFO_F=${OPCAGT_NDINFO_F:-${OPCAGT_CFG_DIR}/nodeinfo}
OPCAGT_INFO_F=${OPCAGT_INFO_F:-${OPCAGT_INST_DIR}/opcinfo}
OPCAGT_NETLS_F=${OPCAGT_NETLS_F:-${OPCAGT_CFG_DIR}/opcnetls}
OPCAGT_MGRCONF_F=${OPCAGT_MGRCONF_F:-${OPCAGT_CFG_DIR}/mgrconf}
OPCAGT_UPD_F=${OPCAGT_UPD_F:-${OPCAGT_TMP_DIR}/update}
OPCAGT_CLIENT_F=${OPCAGT_CLIENT_F:-${OPCAGT_INST_DIR}/cfg.clients}
OPCAGT_MGMTSV_F=${OPCAGT_MGMTSV_F:-${TMP_DIR}/mgmt_sv.dat}
#
# commands
#
OPCMON=${OPCAGT_BIN_DIR}/opcmon
OPCMSG=${OPCAGT_BIN_DIR}/opcmsg
VUE_DIR=/etc/vue
VUE_USR_DIR=/usr/vue
VUE_ETC_DIR=/etc/vue
VUE_VAR_DIR=/var/vue
CDE_USR_DIR=/usr/dt
CDE_ETC_DIR=/etc/dt
CDE_VAR_DIR=/var/dt
#-------------------------------------
# paths
#-------------------------------------
SYSTEM_PATH=${SYSTEM_PATH:-"/bin:/usr/bin:/sbin:/usr/sbin:/etc:/usr/etc:/usr/ucb"}
OV_PATH=${OV_BIN_DIR}
OPCSVR_PATH=${OPCSVR_BIN_DIR}:${OPCSVR_AGTINST_DIR}:${OPCSVR_INST_DIR}
OPCAGT_PATH=${OPCAGT_BIN_DIR}:${OPCAGT_INST_DIR}:${OPCAGT_MON_DIR}:${OPCAGT_ACT_DIR}:${OPCAGT_CMD_DIR}
# program name
APPLNAME=ITO
LONG_APPLNAME="HP OpenView Operations for Unix 12.05.006"
# common umask value
umask 022
# location of the oratab file
ORATAB_LOC=/etc/oratab
# shared library suffix
SHLIBSUFFIX=so
print_usage()
{
echo "Usage: $0 [-? | -help|-h | -stop | -kill | -start | -restart | -cleanstart| -status | -type [-verbose] | -version | -base_version | -patch_version | -hotfix_version | -list_all_versions]"
echo " -help|h|? Prints this message."
echo " -stop Stop Event/Action Agent only when either OVPA not installed or not running."
echo " -kill Stop OV Core functionality."
echo " -start Start Event/Action Agent."
echo " -restart Restart Event/Action Agent and Performance collection component."
echo " -cleanstart Restart Event/Action Agent doing a cleanup of temporary files."
echo " -status Show status of Event/Action Agent."
echo " -type Show type of Event/Action Agent."
echo " -verbose Show detailed info of Event/Action Agent."
echo " -version Show the base/latest patch version information."
echo " -base_version Show the base version installed on the system."
echo " -patch_version Show the latest patch installed on the system."
echo " -hotfix_version Show all the hotfix versions installed on the system."
echo " -list_all_versions Show base,patch,hotfix versions installed on the system."
echo ""
exit 0
}
## Function to Get Agent version
## Get Agent version from ovdeploy -inv
## Get Agent Version bundle version
opcagt_version()
{
GREP="grep"
CUT="cut"
SED="sed"
CAT="cat"
AWK="awk"
highestPatchVersion=00.00.000
if [ -f ${OV_VAR_DIR}/installation/inventory/HPOvEaAgt.xml ]
then
if [ -f ${OV_BIN_DIR}/ovdeploy ]
then
eval $SET_OPC_LANG ${OV_BIN_DIR}/ovdeploy -inv -includeupdates | ${GREP} HOTFIX > /dev/null
if [ $? -eq 0 ]
then
eval $SET_OPC_LANG ${OV_BIN_DIR}/ovdeploy -inv -includeupdates | ${GREP} PATCH > /dev/null
if [ $? -eq 0 ]
then
PATCH_NAME=`$SET_OPC_LANG ${OV_BIN_DIR}/ovdeploy -inv -includeupdates | ${GREP} PATCH | ${AWK} -F: '{print $NF}' | sed "s/ //"`
INST_OPCVERS=`${CAT} /var/opt/OV/installation/inventory/Operations-agent_$PATCH_NAME.xml | ${GREP} "<version>" | ${CUT} -d">" -f2 | ${CUT} -d"<" -f1 | head -1 2>/dev/null`
else
INST_OPCVERS=`${CAT} /var/opt/OV/installation/inventory/Operations-agent.xml | ${GREP} "<version>" | ${CUT} -d">" -f2 | ${CUT} -d"<" -f1 | head -1 2>/dev/null`
fi
else
INST_OPCVERS=`$SET_OPC_LANG ${OV_BIN_DIR}/ovdeploy -inv | ${GREP} 'bdl' | ${GREP} "Operations-agent" | ${CUT} -c 59- | ${SED} 's/^ *//g'| ${SED} 's/ *$//g' | ${CUT} -f1 -d " "`
fi
fi
else
if [ `ls ${OV_NEWCFG_DIR}/installation/inventory/OVO-Agent* 2> /dev/null | wc -l` -ne 0 ]
then
for bundleXmlFile in `ls ${OV_NEWCFG_DIR}/installation/inventory/OVO-Agent*`
do
grep "<ishotfix>" ${bundleXmlFile} >/dev/null
if [ $? -eq 0 ]
then
IsHotfix=`${CAT} ${bundleXmlFile} | ${GREP} "<ishotfix>" | ${CUT} -d">" -f2 | ${CUT} -d"<" -f1 2>/dev/null`
if [ "x$IsHotfix" = "xfalse" ]
then
version=`${CAT} ${bundleXmlFile} | ${GREP} "<version>" | ${CUT} -d">" -f2 | ${CUT} -d"<" -f1 | head -1 2>/dev/null`
if [ `echo ${version} | tr -d '.'` -gt `echo ${highestPatchVersion} | tr -d '.'` ]
then
highestPatchVersion=$version
fi
fi
else
version=`${CAT} ${bundleXmlFile} | ${GREP} "<version>" | ${CUT} -d">" -f2 | ${CUT} -d"<" -f1 | head -1 2>/dev/null`
if [ `echo ${version} | tr -d '.'` -gt `echo ${highestPatchVersion} | tr -d '.'` ]
then
highestPatchVersion=$version
fi
fi
done
fi
INST_OPCVERS=$highestPatchVersion
fi
}
opcagt_base_version()
{
GREP="grep"
CUT="cut"
SED="sed"
CAT="cat"
AWK="awk"
highestPatchVersion=00.00.000
if [ -f ${OV_VAR_DIR}/installation/inventory/HPOvEaAgt.xml ]
then
if [ -f ${OV_BIN_DIR}/ovdeploy ]
then
if [ -f /var/opt/OV/installation/inventory/Operations-agent.xml ]
then
INST_OPCVERS=`${CAT} /var/opt/OV/installation/inventory/Operations-agent.xml | ${GREP} "<version>" | ${CUT} -d">" -f2 | ${CUT} -d"<" -f1 | head -1 2>/dev/null`
else
return 1
fi
fi
else
if [ -f ${OV_NEWCFG_DIR}/installation/inventory/OVO-Agent.xml ]
then
BaseVersion=`${CAT} ${OV_NEWCFG_DIR}/installation/inventory/OVO-Agent.xml | ${GREP} "<version>" | ${CUT} -d">" -f2 | ${CUT} -d"<" -f1 | head -1 2>/dev/null`
else
return 1
fi
INST_OPCVERS=$BaseVersion
fi
}
opcagt_patch_version()
{
GREP="grep"
CUT="cut"
SED="sed"
CAT="cat"
AWK="awk"
highestPatchVersion=00.00.000
if [ -f ${OV_VAR_DIR}/installation/inventory/HPOvEaAgt.xml ]
then
if [ -f ${OV_BIN_DIR}/ovdeploy ]
then
eval $SET_OPC_LANG ${OV_BIN_DIR}/ovdeploy -inv -includeupdates | ${GREP} PATCH > /dev/null
if [ $? -eq 0 ]
then
PATCH_NAME=`$SET_OPC_LANG ${OV_BIN_DIR}/ovdeploy -inv -includeupdates | ${GREP} PATCH | ${AWK} -F: '{print $NF}' | sed "s/ //"`
PATCH_VERS=`${CAT} /var/opt/OV/installation/inventory/Operations-agent_$PATCH_NAME.xml | ${GREP} "<version>" | ${CUT} -d">" -f2 | ${CUT} -d"<" -f1 | head -1 2>/dev/null`
INST_OPCVERS="${PATCH_NAME}:${PATCH_VERS}"
echo "${INST_OPCVERS}"
else
return 1
fi
fi
else
if [ `ls ${OV_NEWCFG_DIR}/installation/inventory/OVO-Agent* 2> /dev/null | wc -l` -ne 0 ]
then
for bundleXmlFile in `ls ${OV_NEWCFG_DIR}/installation/inventory/OVO-Agent*`
do
grep "<ishotfix>" ${bundleXmlFile} >/dev/null
if [ $? -eq 0 ]
then
IsHotfix=`${CAT} ${bundleXmlFile} | ${GREP} "<ishotfix>" | ${CUT} -d">" -f2 | ${CUT} -d"<" -f1 2>/dev/null`
if [ "x$IsHotfix" = "xfalse" ]
then
version=`${CAT} ${bundleXmlFile} | ${GREP} "<version>" | ${CUT} -d">" -f2 | ${CUT} -d"<" -f1 | head -1 2>/dev/null`
PatchID=`${CAT} ${bundleXmlFile} | ${GREP} "<patchid>" | ${CUT} -d">" -f2 | ${CUT} -d"<" -f1 | head -1 2>/dev/null`
if [ `echo ${version} | tr -d '.'` -gt `echo ${highestPatchVersion} | tr -d '.'` ]
then
highestPatchVersion=$version
fi
fi
fi
done
INST_OPCVERS="${PatchID}:${highestPatchVersion}"
echo "${INST_OPCVERS}"
fi
fi
}
opcagt_hotfix_version()
{
GREP="grep"
CUT="cut"
SED="sed"
CAT="cat"
AWK="awk"
highestPatchVersion=00.00.000
if [ -f ${OV_VAR_DIR}/installation/inventory/HPOvEaAgt.xml ]
then
if [ -f ${OV_BIN_DIR}/ovdeploy ]
then
eval $SET_OPC_LANG ${OV_BIN_DIR}/ovdeploy -inv -includeupdates | ${GREP} HOTFIX > /dev/null
if [ $? -eq 0 ]
then
HOTFIX_NAME=`$SET_OPC_LANG ${OV_BIN_DIR}/ovdeploy -inv -includeupdates | ${GREP} HOTFIX | ${AWK} -F: '{print $NF}' | sed "s/ //"`
for each_hotfix in ${HOTFIX_NAME}
do
INST_OPCVERS=`${CAT} /var/opt/OV/installation/inventory/Operations-agent_${each_hotfix}.xml | ${GREP} "<version>" | ${CUT} -d">" -f2 | ${CUT} -d"<" -f1 | head -1 2>/dev/null`
echo "${each_hotfix}:${INST_OPCVERS}"
done
else
return 1
fi
fi
else
if [ `ls ${OV_NEWCFG_DIR}/installation/inventory/OVO-Agent* 2> /dev/null | wc -l` -ne 0 ]
then
for bundleXmlFile in `ls ${OV_NEWCFG_DIR}/installation/inventory/OVO-Agent*`
do
grep "<ishotfix>" ${bundleXmlFile} >/dev/null
if [ $? -eq 0 ]
then
IsHotfix=`${CAT} ${bundleXmlFile} | ${GREP} "<ishotfix>" | ${CUT} -d">" -f2 | ${CUT} -d"<" -f1 2>/dev/null`
if [ "x$IsHotfix" = "xtrue" ]
then
version=`${CAT} ${bundleXmlFile} | ${GREP} "<version>" | ${CUT} -d">" -f2 | ${CUT} -d"<" -f1 | head -1 2>/dev/null`
HotfixID=`${CAT} ${bundleXmlFile} | ${GREP} "<patchid>" | ${CUT} -d">" -f2 | ${CUT} -d"<" -f1 | head -1 2>/dev/null`
echo "${HotfixID}:${version}"
fi
fi
done
fi
fi
}
## NSMbb56574
## function to perform safe agent kill in the case if there are
## management server processes still running
safe_opcagt_kill()
{
GREP="grep"
## Check if there are any other processes runnning apart from
## agent and LCORE
eval $SET_OPC_LANG ${OV_BIN_DIR}/ovc -status | ${GREP} -vE "CORE|AGENT" > /dev/null
if [ $? -eq 0 ]
then
## kill only agent and coda
eval $SET_OPC_LANG ${OV_BIN_DIR}/ovc -stop AGENT ${CODA_COMP_NAME}
else
eval $SET_OPC_LANG ${OV_BIN_DIR}/ovc -kill
fi
}
set_exit_status()
{
if [ $? -ne 0 ]
then
exit_val=1
fi
}
#
# Function: user_can_control
# ---------------------------
#
# Function to check the user permissions
# Returns '1' if user is root or member of OV group
#
user_can_control()
{
ID="id"
AWK="awk"
# check the id and the group of the calling user
USER_ID=`${ID} -u`
USER_GROUPS=`${ID} -G -n`
TOOL_GROUP=`ls -l ${OV_BIN_DIR}/opcagt | ${AWK} '{print $4}'`
# Caller must either have id == 0 for root
# or must be member of the same group as this tool
if [ ${USER_ID} -ne 0 ]
then
for grp in $USER_GROUPS
do
if [ "$grp" = "$TOOL_GROUP" ]
then
return 1
fi
done
else
return 1
fi
return 0
}
#
# Function: opcagt_clean
# ---------------------------
#
# Function to remove the queue files and temporary files
#
#
opcagt_clean()
{
if [ -d ${OV_VAR_DIR}/tmp/OpC/mib_indexes ]
then
rm -rf ${OV_VAR_DIR}/tmp/OpC/mib_indexes
fi
if [ -d ${OV_VAR_DIR}/tmp/OpC ]
then
for file_name in `ls ${OV_VAR_DIR}/tmp/OpC`
do
if [ "$file_name" != "bin" -a "$file_name" != "conf" -a "$file_name" != "trace" ]
then
rm ${OV_VAR_DIR}/tmp/OpC/$file_name
fi
done
for file_name in `ls ${OV_VAR_DIR}/tmp/public/OpC`
do
rm ${OV_VAR_DIR}/tmp/public/OpC/$file_name
done
fi
}
set_non_root_command()
{
AGT_MODE=`${OV_BIN_DIR}/ovconfget eaagt MODE`
npu_user=`${OV_BIN_DIR}/ovconfget ctrl.sudo OV_SUDO_USER` 2>/dev/null
USERNAME=`/usr/bin/id | cut -d'(' -f2 | cut -f1 -d')'`
if [ "$AGT_MODE" = "NPU" -o "$AGT_MODE" = "MIXED" ] ; then
if [ "x${npu_user}" != "x" -a "x${USERNAME}" != "x${npu_user}" ]; then
NPU_CMD="su - $npu_user -c "
fi
fi
# if MODE is not MIXED or user is not NPU (MIXED mode), then allow running PA scripts
RUN_PCC=0
if [ "x$AGT_MODE" != "xMIXED" -o "x${USERNAME}" != "x${npu_user}" ]; then
RUN_PCC=1
fi
}
PATH=$PATH:$SYSTEM_PATH
PATH=`echo $PATH |
sed -e 's/::/:/g' \
-e 's/:$//' \
-e 's/^://' \
-e 's/:\.:/:/g' \
-e 's/^\.://' \
-e 's/:\.$//'`
export PATH
CODA_COMP_NAME="oacore"
#
# Get timezone here if the ITO agent should run with different
# Timezone than the one configured for this system
# NOTE: Also actions/commands/monitors will run with this timezone setting!
# timezone is extracted from mgrconf file if available and only if the
# TIMEZONETYPE is "Fix". With this mechanism one can set a fix timezone
# centrally from the server via mom template distribution
#
if [ -f ${OPCAGT_MGRCONF_F} ]
then
AWK="awk"
TZ_VAL=`${AWK} 'BEGIN{ FS="\""; tzval=0 }; \
/^ *TIMEZONETYPE *[fF][Ii][Xx]/{ tzval=1 }; \
/^ *TIMEZONEVALUE *\".*\"/{ \
if (tzval == 1){ print $2; exit } }' ${OPCAGT_MGRCONF_F}`
if [ "X${TZ_VAL}" != "X" ]
then
TZ=${TZ_VAL}
export TZ
fi
fi
OPC_LANG="English"
inst_lang_check
# only check opcnls when not queried for type
if [ "$1" != "-type" ]; then
# check environmnet
${OPCAGT_BIN_DIR}/utils/opcnls -l 1>/dev/null
if [ "$?" -ne 0 ]; then
echo ""
echo "Environment variables for NLS are probably set incorrect."
echo "Correct ones are LC_ALL=${OPC_LANG} LANG=${OPC_LANG}"
echo ""
echo "See HP OpenView Administrator\'s Reference for details."
echo "The agent will probably not work in such environment"
echo "Correct upper variables and re-use this command."
echo "Temporary LANG will be set to C"
SET_OPC_LANG="LC_ALL=C LANG=C"
fi
fi
#
# Wrap the option to the ovc command
#
user_can_control
IS_ROOTBIN=$?
#If NPU mode is set then set variable to start processes under set non root user
set_non_root_command
if [ ${IS_ROOTBIN} -eq 1 ]
then
exit_val=0
else
exit_val=1
fi
# TOOL_GROUP is set by 'user_can_control'
ROOT_WARN_STR="Only 'root' users and members of group '${TOOL_GROUP}' can control OV processes"
if [ -f ${OV_BIN_DIR}/ovc ]
then
if [ "x$*" = "x" ]
then
if [ -f ${OV_VAR_DIR}/installation/inventory/HPOvEaAgt.xml ]
then
if [ ${IS_ROOTBIN} -eq 1 ]
then
eval $PERF_BIN_DIR/ovpa status perf
set_exit_status
eval $SET_OPC_LANG ${OV_BIN_DIR}/ovc -status AGENT ${CODA_COMP_NAME} CORE COREXT
set_exit_status
eval $SET_OPC_LANG ${OV_OPT_DIR}/lbin/eaagt/opcmsga -status
set_exit_status
else
echo ${ROOT_WARN_STR}
fi
else
echo "Agent is in the inactive state. To query the status of agent processes, the agent should be configured."
fi
else
case $1 in
-help|-h|-?)
print_usage
;;
-stop)
if [ ${IS_ROOTBIN} -eq 1 ]
then
if [ -n "$2" -a "$2" = "CODA" -o "$2" = "-coda" -o "$2" = "-CODA" -o "$2" = "coda" ]
then
if [ $NGCONFIGURED -eq 0 ] ; then
if [ ${RUN_PCC} -eq 1 ]; then
eval $PERF_BIN_DIR/ovpa stop alarm >>/dev/null
set_exit_status
fi
if [ "x$NPU_CMD" != "x" ]; then
eval $NPU_CMD \"$SET_OPC_LANG ${OV_BIN_DIR}/ovc -stop ${CODA_COMP_NAME}\"
else
eval $SET_OPC_LANG ${OV_BIN_DIR}/ovc -stop ${CODA_COMP_NAME}
fi
set_exit_status
else
print_usage
fi
elif [ "x$2" != "x" ]
then
print_usage
else
if [ ${RUN_PCC} -eq 1 ]; then
eval $PERF_BIN_DIR/ovpa stop alarm >>/dev/null
set_exit_status
fi
if [ "x$NPU_CMD" != "x" ]; then
eval $NPU_CMD \"$SET_OPC_LANG ${OV_BIN_DIR}/ovc -stop AGENT ${CODA_COMP_NAME}\"
else
eval $SET_OPC_LANG ${OV_BIN_DIR}/ovc -stop AGENT ${CODA_COMP_NAME}
fi
set_exit_status
if [ ${RUN_PCC} -eq 1 ]; then
eval $PERF_BIN_DIR/ovpa stop >>/dev/null
set_exit_status
eval $PERF_BIN_DIR/pctl stop >>/dev/null
set_exit_status
fi
fi
else
echo ${ROOT_WARN_STR}
fi
;;
-kill)
if [ "x$2" != "x" ]
then
print_usage
fi
if [ ${IS_ROOTBIN} -eq 1 ]
then
if [ ${RUN_PCC} -eq 1 ]; then
eval $PERF_BIN_DIR/ovpa stop alarm >>/dev/null
set_exit_status
fi
safe_opcagt_kill
set_exit_status
if [ ${RUN_PCC} -eq 1 ]; then
eval $PERF_BIN_DIR/ovpa stop >>/dev/null
set_exit_status
eval $PERF_BIN_DIR/pctl stop >>/dev/null
set_exit_status
if [ -x ${PERF_BIN_DIR}/midaemon ]
then
eval ${PERF_BIN_DIR}/midaemon -T >>/dev/null
set_exit_status
fi
if [ -x ${PERF_BIN_DIR}/ttd ]
then
eval ${PERF_BIN_DIR}/ttd -k >>/dev/null
set_exit_status
fi
fi
else
echo ${ROOT_WARN_STR}
fi
;;
-start)
if [ "x$2" != "x" ]
then
print_usage
fi
if [ ${IS_ROOTBIN} -eq 1 ]
then
if [ ${RUN_PCC} -eq 1 ]; then
eval $PERF_BIN_DIR/ovpa start >>/dev/null
set_exit_status
stopPerfd=`${OV_BIN_DIR}/ovconfget install.config DISABLE_REALTIME | tr '[A-Z]' '[a-z]'`
if [ "x$stopPerfd" = "x" -o "$stopPerfd" != "true" ]
then
eval $PERF_BIN_DIR/pctl start >>/dev/null
set_exit_status
fi
fi
if [ "x$NPU_CMD" != "x" ]; then
eval $NPU_CMD \"$SET_OPC_LANG ${OV_BIN_DIR}/ovc -start AGENT ${CODA_COMP_NAME}\"
else
eval $SET_OPC_LANG ${OV_BIN_DIR}/ovc -start AGENT ${CODA_COMP_NAME}
fi
set_exit_status
else
echo ${ROOT_WARN_STR}
fi
;;
-restart)
if [ "x$2" != "x" ]
then
print_usage
fi
if [ ${IS_ROOTBIN} -eq 1 ]
then
if [ ${RUN_PCC} -eq 1 ]; then
eval $PERF_BIN_DIR/ovpa stop alarm >>/dev/null
stopPerfd=`${OV_BIN_DIR}/ovconfget install.config DISABLE_REALTIME | tr '[A-Z]' '[a-z]'`
if [ "x$stopPerfd" = "x" -o "$stopPerfd" != "true" ]
then
eval $PERF_BIN_DIR/pctl restart >>/dev/null
set_exit_status
fi
fi
if [ "x$NPU_CMD" != "x" ]; then
eval $NPU_CMD \"$SET_OPC_LANG ${OV_BIN_DIR}/ovc -restart AGENT ${CODA_COMP_NAME}\"
else
eval $SET_OPC_LANG ${OV_BIN_DIR}/ovc -restart AGENT ${CODA_COMP_NAME}
fi
set_exit_status
if [ ${RUN_PCC} -eq 1 ]; then
eval $PERF_BIN_DIR/ovpa stop >>/dev/null
set_exit_status
eval $PERF_BIN_DIR/ovpa start >>/dev/null
set_exit_status
fi
else
echo ${ROOT_WARN_STR}
fi
;;
-cleanstart)
if [ "x$2" != "x" ]
then
print_usage
fi
if [ ${IS_ROOTBIN} -eq 1 ]
then
if [ ${RUN_PCC} -eq 1 ]; then
eval $PERF_BIN_DIR/ovpa stop alarm >>/dev/null
set_exit_status
fi
safe_opcagt_kill
set_exit_status
if [ ${RUN_PCC} -eq 1 ]; then
eval $PERF_BIN_DIR/ovpa stop >>/dev/null
set_exit_status
eval $PERF_BIN_DIR/pctl stop >>/dev/null
set_exit_status
fi
else
echo ${ROOT_WARN_STR}
fi
opcagt_clean
set_exit_status
if [ ${RUN_PCC} -eq 1 ]; then
eval $PERF_BIN_DIR/pctl start >>/dev/null
set_exit_status
fi
if [ "x$NPU_CMD" != "x" ]; then
eval $NPU_CMD \"$SET_OPC_LANG ${OV_BIN_DIR}/ovc -start AGENT ${CODA_COMP_NAME}\"
else
eval $SET_OPC_LANG ${OV_BIN_DIR}/ovc -start AGENT ${CODA_COMP_NAME}
fi
set_exit_status
if [ ${RUN_PCC} -eq 1 ]; then
eval $PERF_BIN_DIR/ovpa start >>/dev/null
set_exit_status
fi
;;
-status)
if [ "x$2" != "x" ]
then
print_usage
fi
if [ ${IS_ROOTBIN} -eq 1 ]
then
eval $PERF_BIN_DIR/ovpa status perf
set_exit_status
eval $SET_OPC_LANG ${OV_BIN_DIR}/ovc -status AGENT ${CODA_COMP_NAME} CORE COREXT
set_exit_status
eval $SET_OPC_LANG ${OV_OPT_DIR}/lbin/eaagt/opcmsga -status
set_exit_status
else
echo ${ROOT_WARN_STR}
fi
;;
-type)
if [ "x$3" != "x" ]
then
print_usage
fi
case $2 in
-verbose)
opcagt_version
OVPATH="${OV_BIN_DIR}/ovpath"
echo "AGENT_TYPE=HTTPS"
echo "OVO_DATADIR=\"`${OVPATH} -datadir`/\""
echo "OVO_INSTALLDIR=\"`${OVPATH} -instdir`/\""
echo "OVOAGT_ACTDIR=\"`${OVPATH} -datadir instrumentation`/\""
echo "OVOAGT_MONDIR=\"`${OVPATH} -datadir instrumentation`/\""
echo "OVOAGT_CMDDIR=\"`${OVPATH} -datadir instrumentation`/\""
echo "OVOAGT_INSTRUMENTDIR=\"`${OVPATH} -datadir instrumentation`/\""
echo "OVOAGT_BINVERS=${INST_OPCVERS}"
MGMTSV=`eval $SET_OPC_LANG ${OV_BIN_DIR}/ovconfget | \
grep "MANAGER *=" | \
sed -e 's/ *= */=/' -e 's/MANAGER/OPC_MGMT_SERVER/'`
if [ -z "${MGMTSV}" ]; then
echo "OPC_MGMT_SERVER="
else
echo ${MGMTSV}
fi
;;
*)
echo "HTTPS"
;;
esac
;;
-version)
opcagt_version
echo "${INST_OPCVERS}"
;;
-base_version)
opcagt_base_version
if [ $? -ne 0 ]
then
exit 1
fi
echo "${INST_OPCVERS}"
;;
-patch_version)
opcagt_patch_version
if [ $? -ne 0 ]
then
exit 1
fi
;;
-hotfix_version)
opcagt_hotfix_version
if [ $? -ne 0 ]
then
exit 1
fi
;;
-list_all_versions)
opcagt_base_version
echo "Base version:"
echo "${INST_OPCVERS}"
echo "Patch version:"
opcagt_patch_version
echo "Hotfix version:"
opcagt_hotfix_version
;;
*)
print_usage
;;
esac
fi
else
echo "${OV_BIN_DIR}/ovc not found"
exit 1
fi
exit ${exit_val}
###############################################################################
# End of file: opcagt
###############################################################################