HEX
Server: Apache/2.4.34 (Red Hat) OpenSSL/1.0.2k-fips
System: Linux WORDPRESS 3.10.0-1160.118.1.el7.x86_64 #1 SMP Thu Apr 4 03:33:23 EDT 2024 x86_64
User: digital (1020)
PHP: 7.2.24
Disabled: NONE
Upload Files
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
###############################################################################