%PDF- %PDF-
Server IP : 79.170.40.229 / Your IP : 3.147.242.38 Web Server : Apache System : Linux web232.extendcp.co.uk 4.18.0-513.24.1.el8_9.x86_64 #1 SMP Mon Apr 8 11:23:13 EDT 2024 x86_64 User : 1stforcarhirealicante.com ( 296923) PHP Version : 5.6.40 Disable Function : NONE MySQL : ON | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /proc/thread-self/root/etc/init.d/ |
Upload File : |
#!/bin/sh ############################################################################### # # Dell Inc. PROPRIETARY INFORMATION # This software is supplied under the terms of a license agreement or # nondisclosure agreement with Dell Inc. and may not # be copied or disclosed except in accordance with the terms of that # agreement. # # Copyright (c) 2000-2011 Dell Inc. All Rights Reserved. # # Module Name: # # dataeng # # Abstract/Purpose: # # Systems Management Data Engine init script # # Environment: # # Linux # # Following two lines used by chkconfig utility: # chkconfig: 35 96 04 # description: Systems Management Data Engine # ### BEGIN INIT INFO # Provides: dataeng # Should-Start: instsvcdrv fluid_cache # Required-Start: $localfs $remotefs $syslog # Required-Stop: $localfs $remotefs $syslog # Should-Stop: instsvcdrv fluid_cache # Default-Start: 3 5 # Default-Stop: 1 2 # Short-Description: Systems Management Data Engine # Description: Systems Management Data Engine ### END INIT INFO # ############################################################################### DENG_PROD_NAME="Systems Management Data Engine" DENG_SCRIPT_NAME="dataeng" DENG_DEFAULT_INSTALL_DIR="/opt/dell/srvadmin" # Make sure HOSTTYPE is set [ -z "${HOSTTYPE}" ] && HOSTTYPE=$(uname -m) # OS information OM_INITSCRIPT_DIR="/etc/rc.d/init.d" OS_INITSCRIPT_DIR="/etc/init.d" OS_SUBSYS_LOCK_DIR="/var/lock/subsys/" OS_SCRIPT_FUNCTIONS_LSB="/lib/lsb/init-functions" OS_SCRIPT_FUNCTIONS_RH="/etc/init.d/functions" OS_SCRIPT_FUNCTIONS_NONE="none" OS_SNMP_SVCNAME="snmpd" OS_SNMP_SCRIPT="${OS_INITSCRIPT_DIR}/${OS_SNMP_SVCNAME}" # Check for supported OS script functions if [ -f ${OS_SCRIPT_FUNCTIONS_RH} ]; then OS_SCRIPT_FUNCTIONS=${OS_SCRIPT_FUNCTIONS_RH} elif [ -f ${OS_SCRIPT_FUNCTIONS_LSB} ]; then OS_SCRIPT_FUNCTIONS=${OS_SCRIPT_FUNCTIONS_LSB} else OS_SCRIPT_FUNCTIONS=${OS_SCRIPT_FUNCTIONS_NONE} fi # Include OS script functions if available if [ ${OS_SCRIPT_FUNCTIONS} != ${OS_SCRIPT_FUNCTIONS_NONE} ]; then . ${OS_SCRIPT_FUNCTIONS} fi if [ "$(uname -s)" = "VMkernel" ]; then OS_KERNEL_VMKERNEL=1 else OS_KERNEL_VMKERNEL=0 fi # omreg config file variables OM_INSTALL_FILE="/opt/dell/srvadmin/etc/srvadmin-omilcore/install.ini" OM_REG_FILE="/opt/dell/srvadmin/etc/omreg.cfg" OMDATAENG_INSTALLPATH_KEY="OMDataEngine.installpath" OMDATAENG_STARTSNMPD_KEY="OMDataEngine.startsnmpd" OMDATAENG_SHOULDSTART_SVCLIST_KEY="OMDataEngine.shouldstart.servicelist" DENG_DAEMON_DIR="/opt/dell/srvadmin/sbin" DENG_FWSNMP_SCRIPT="/opt/dell/srvadmin/lib64/srvadmin-deng/dcfwsnmp.sh" DENG_FWSNMP_OFF_FILE="/opt/dell/srvadmin/var/lib/srvadmin-deng/dcfwsnmp.off" DENG_DCSNMP_OFF_FILE="/opt/dell/srvadmin/var/lib/srvadmin-deng/dcsnmp.off" DENG_LOCK_FILE="${OS_SUBSYS_LOCK_DIR}/${DENG_SCRIPT_NAME}" DENG_LD_LIBRARY_PATH_SET=0 OMIL_SYSCHECK_SCRIPT="/opt/dell/srvadmin/sbin/CheckSystemType" OMIL_SYSCHECK_SCRIPT_LOADED=0 # Systems Management Device Drivers variables ISVCDD_SCRIPT="${OM_INITSCRIPT_DIR}/instsvcdrv" # Script messages DENG_MSG_DE_SNMP_ENABLED="Data Engine SNMP enabled" DENG_MSG_DE_SNMP_DISABLED="Data Engine SNMP disabled" DENG_MSG_DE_SNMP_NOTINSTALLED="Data Engine SNMP not installed" DENG_MSG_OS_FIREWALL_SNMP_1="WARNING: The SNMP port appears to be closed by the firewall." DENG_MSG_OS_FIREWALL_SNMP_2="You may not be able to manage this system remotely using SNMP." DENG_MSG_OS_FIREWALL_SNMP_3="See Firewall Configuration in the product user's guide." DENG_MSG_OS_SNMP_NOTINSTALLED="OS SNMP support not installed" DENG_MSG_OS_SNMP_NOTSTARTED_1="warning: ${OS_SNMP_SVCNAME} not started." DENG_MSG_OS_SNMP_NOTSTARTED_2="${OS_SNMP_SVCNAME} must be started to manage this system using SNMP." # Standard status codes for commands other than "status" STATUS_NO_ERROR=0 STATUS_GENERIC_ERROR=1 STATUS_INVALID_ARG=2 STATUS_NOT_IMPLEMENTED=3 # Data Engine status codes for commands other than "status" STATUS_OS_SNMP_NOT_FOUND=250 STATUS_DE_SNMP_NOT_FOUND=251 STATUS_SYSTEM_NOT_SUPPORTED=252 # Standard status codes for "status" command STATUS_RUNNING=0 STATUS_DEAD_PIDFILE_EXISTS=1 STATUS_DEAD_LOCKFILE_EXISTS=2 STATUS_NOT_RUNNING=3 STATUS_UNKNOWN=4 # Default to no daemons enabled DENG_DAEMON_ALL_LIST="" DENG_DAEMON_START_LIST="" DENG_DAEMON_STOP_LIST="" DENG_DAEMONS_ENABLED=0 DENG_DCSNMP_INSTALLED=0 DENG_DCSNMP_ENABLED=0 # If DE SNMP is not installed we should not try to start snmp service and report error # First clean up grep -q "^SNMP=disable" $OM_INSTALL_FILE if [ $? = ${STATUS_RUNNING} ]; then #touch the off file touch $DENG_DCSNMP_OFF_FILE fi # Check for Data Manager DENG_DCSTOR="dsm_sa_datamgrd" DENG_DAEMON_ALL_LIST="${DENG_DAEMON_ALL_LIST} ${DENG_DCSTOR}" DENG_DAEMON_START_LIST="${DENG_DAEMON_START_LIST} ${DENG_DCSTOR}" DENG_DAEMON_STOP_LIST="${DENG_DCSTOR} ${DENG_DAEMON_STOP_LIST}" DENG_DAEMONS_ENABLED=1 # Check for Event Plug-in Manager DENG_DCEVT="dsm_sa_eventmgrd" DENG_DAEMON_ALL_LIST="${DENG_DAEMON_ALL_LIST} ${DENG_DCEVT}" DENG_DAEMON_START_LIST="${DENG_DCEVT} ${DENG_DAEMON_START_LIST}" DENG_DAEMON_STOP_LIST="${DENG_DAEMON_STOP_LIST} ${DENG_DCEVT}" DENG_DAEMONS_ENABLED=1 # Check for SNMP Plug-in Manager DENG_DCSNMP="dsm_sa_snmpd" DENG_DAEMON_ALL_LIST="${DENG_DAEMON_ALL_LIST} ${DENG_DCSNMP}" DENG_DCSNMP_INSTALLED=1 # Check if Data Engine SNMP disabled if [ ! -f ${DENG_DCSNMP_OFF_FILE} ]; then DENG_DAEMON_START_LIST="${DENG_DAEMON_START_LIST} ${DENG_DCSNMP}" DENG_DAEMON_STOP_LIST="${DENG_DCSNMP} ${DENG_DAEMON_STOP_LIST}" DENG_DAEMONS_ENABLED=1 DENG_DCSNMP_ENABLED=1 fi ############################################################################### # Begin Functions ############################################################################### ############################################################################### # Function: dataeng_start # Description: Start Data Engine daemons # Returns: LSB status codes ############################################################################### dataeng_start() { local msg status # Check if system supported dataeng_check_system_type status=$? if [ ${status} != ${STATUS_NO_ERROR} ]; then echo "Starting ${DENG_PROD_NAME}:" msg="Failed to start because system is not supported" echo "${msg}" dataeng_supt_logmessage "${DENG_PROD_NAME}: ${msg}" return ${status} fi # Check if any Data Engine daemons are enabled if [ ${DENG_DAEMONS_ENABLED} = 0 ]; then echo "Starting ${DENG_PROD_NAME}:" echo "No daemons enabled" return ${STATUS_NO_ERROR} fi # Start any soft dependencies dataeng_start_softdep_services # Check if Data Engine SNMP is enabled if [ ${DENG_DCSNMP_ENABLED} = 1 ]; then # Check if SNMP agent started dataeng_supt_daemonstatus ${OS_SNMP_SVCNAME} >/dev/null if [ $? != ${STATUS_RUNNING} ]; then # Check config file to see if it's OK # to start the SNMP agent if [ -f ${OM_REG_FILE} ]; then LOC_STARTSNMPD=`grep "^${OMDATAENG_STARTSNMPD_KEY}=" ${OM_REG_FILE} | \ sed "s/^.*=//"` fi # Start SNMP agent if allowed if [ "${LOC_STARTSNMPD}" != "false" ] && [ "${LOC_STARTSNMPD}" != "FALSE" ]; then [ -x ${OS_SNMP_SCRIPT} ] && ${OS_SNMP_SCRIPT} start fi fi fi # Check if Systems Management Device Drivers are installed if [ -f ${ISVCDD_SCRIPT} ]; then # Check if Systems Management Device Drivers are started ${ISVCDD_SCRIPT} status >/dev/null if [ $? != 0 ]; then # Start Systems Management Device Drivers ${ISVCDD_SCRIPT} start ISVCDD_STATUS=$? if [ ${ISVCDD_STATUS} != ${STATUS_NO_ERROR} ]; then # Device drivers failed to start return ${ISVCDD_STATUS} fi fi fi echo "Starting ${DENG_PROD_NAME}:" # Start any Data Engine daemons that # are currently installed and enabled for DENG_DAEMON in ${DENG_DAEMON_START_LIST}; do dataeng_startdaemon ${DENG_DAEMON} done # Check if Data Engine SNMP enabled if [ ${DENG_DCSNMP_ENABLED} = 1 ] && [ ${OS_KERNEL_VMKERNEL} = 0 ]; then # Check if SNMP agent started dataeng_supt_daemonstatus ${OS_SNMP_SVCNAME} >/dev/null if [ $? = ${STATUS_RUNNING} ]; then # Check if firewall has SNMP port closed dataeng_check_fwsnmp else # SNMP agent not started dataeng_supt_logmessage "${DENG_MSG_OS_SNMP_NOTSTARTED_1} ${DENG_MSG_OS_SNMP_NOTSTARTED_2}" fi fi return ${STATUS_NO_ERROR} } # dataeng_start ############################################################################### # Function: dataeng_start_softdep_services # Description: Start any soft dependent services # Returns: None ############################################################################### dataeng_start_softdep_services() { # Check for omreg config file if [ ! -f ${OM_REG_FILE} ]; then return fi # Check for soft dependent service list SVCLIST=$( grep "^${OMDATAENG_SHOULDSTART_SVCLIST_KEY}=" ${OM_REG_FILE} | \ sed "s/^.*=//") if [ -z "${SVCLIST}" ]; then return fi # Start soft dependent services if needed for SVCNAME in ${SVCLIST}; do SVCSCRIPT="${OM_INITSCRIPT_DIR}/${SVCNAME}" # Prevent recursion if [ ${SVCNAME} = ${DENG_SCRIPT_NAME} ]; then continue fi # Check for service init script # NOTE: Soft dependent services are not required to be installed. if [ ! -x ${SVCSCRIPT} ]; then continue fi # Check if service already started # NOTE: This script expects service init script # to support LSB status codes. ${SVCSCRIPT} status >/dev/null 2>&1 if [ $? != ${STATUS_RUNNING} ]; then # Start service ${SVCSCRIPT} start # NOTE: Soft dependent services are not required to start # successfully. Status of start command is ignored. fi done } # dataeng_start_softdep_services ############################################################################### # Function: dataeng_startdaemon <daemon> # Description: Start specified daemon # Returns: LSB status codes ############################################################################### dataeng_startdaemon() { local status DAEMON="$1" # Check for daemon name if [ -z ${DAEMON} ]; then echo "${DENG_SCRIPT_NAME}: daemon not specified" return ${STATUS_INVALID_ARG} fi # Check if daemon is Data Engine daemon and installed IS_DENG_DAEMON=0 for DENG_DAEMON in ${DENG_DAEMON_ALL_LIST}; do if [ "${DAEMON}" = "${DENG_DAEMON}" ]; then IS_DENG_DAEMON=1 break fi done if [ ${IS_DENG_DAEMON} = 0 ]; then echo "${DENG_SCRIPT_NAME}: ${DAEMON} not ${DENG_PROD_NAME} daemon or not installed" return ${STATUS_INVALID_ARG} fi echo -n "Starting ${DAEMON}: " DENG_DAEMON_FILE="${DENG_DAEMON_DIR}/${DAEMON}" DENG_DAEMON_OPTS="" # Check if system supported dataeng_check_system_type status=$? if [ ${status} != ${STATUS_NO_ERROR} ]; then echo -n "System not supported" dataeng_supt_showfailure "" return ${status} fi # See if the daemon is running dataeng_supt_daemonstatus ${DAEMON} >/dev/null if [ $? != ${STATUS_RUNNING} ]; then # Start the daemon dataeng_supt_daemonstart "${DENG_DAEMON_FILE}" "${DENG_DAEMON_OPTS}" else echo -n "Already started" dataeng_supt_showsuccess "" fi # Check if any Data Engine daemons running dataeng_status >/dev/null if [ $? = ${STATUS_RUNNING} ]; then # Make sure lock file exists # when Data Engine daemons are running [ -d ${OS_SUBSYS_LOCK_DIR} ] && touch ${DENG_LOCK_FILE} fi return ${STATUS_NO_ERROR} } # dataeng_startdaemon ############################################################################### # Function: dataeng_stop # Description: Stop Data Engine daemons # Returns: LSB status codes ############################################################################### dataeng_stop() { # Check if any Data Engine daemons are enabled if [ ${DENG_DAEMONS_ENABLED} = 0 ]; then echo "Stopping ${DENG_PROD_NAME}:" echo "No daemons enabled" return ${STATUS_NO_ERROR} fi echo "Stopping ${DENG_PROD_NAME}:" # Stop Data Engine daemons that are running for DENG_DAEMON in ${DENG_DAEMON_STOP_LIST}; do dataeng_stopdaemon ${DENG_DAEMON} done return ${STATUS_NO_ERROR} } # dataeng_stop ############################################################################### # Function: dataeng_stopdaemon <daemon> # Description: Stop specified daemon # Returns: LSB status codes ############################################################################### dataeng_stopdaemon() { DAEMON="$1" # Check for daemon name if [ -z ${DAEMON} ]; then echo "${DENG_SCRIPT_NAME}: daemon not specified" return ${STATUS_INVALID_ARG} fi # Check if daemon is Data Engine daemon and installed IS_DENG_DAEMON=0 for DENG_DAEMON in ${DENG_DAEMON_ALL_LIST}; do if [ "${DAEMON}" = "${DENG_DAEMON}" ]; then IS_DENG_DAEMON=1 break fi done if [ ${IS_DENG_DAEMON} = 0 ]; then echo "${DENG_SCRIPT_NAME}: ${DAEMON} not ${DENG_PROD_NAME} daemon or not installed" return ${STATUS_INVALID_ARG} fi echo -n "Stopping ${DAEMON}: " # See if the daemon is running dataeng_supt_daemonstatus ${DAEMON} >/dev/null if [ $? = ${STATUS_RUNNING} ]; then # Stop the daemon dataeng_supt_daemonstop ${DAEMON} else echo -n "Not started" dataeng_supt_showfailure "" fi # Check if any Data Engine daemons still running dataeng_status >/dev/null if [ $? = ${STATUS_NOT_RUNNING} ]; then # Make sure lock file removed when # no Data Engine daemons are running [ -d ${OS_SUBSYS_LOCK_DIR} ] && rm -f ${DENG_LOCK_FILE} fi return ${STATUS_NO_ERROR} } # dataeng_stopdaemon ############################################################################### # Function: dataeng_status # Description: Get status of Data Engine daemons # Returns: LSB status codes ############################################################################### dataeng_status() { DENG_STATUS=${STATUS_NOT_RUNNING} # Check if any Data Engine daemons are enabled if [ ${DENG_DAEMONS_ENABLED} = 1 ]; then # Get status of Data Engine daemons for DENG_DAEMON in ${DENG_DAEMON_START_LIST}; do dataeng_supt_daemonstatus ${DENG_DAEMON} if [ $? = ${STATUS_RUNNING} ]; then DENG_STATUS=${STATUS_RUNNING} fi done fi return ${DENG_STATUS} } # dataeng_status ############################################################################### # Function: dataeng_check_system_type # Description: Check if system supported # Returns: LSB status codes ############################################################################### dataeng_check_system_type() { if [ -f ${OMIL_SYSCHECK_SCRIPT} ]; then if [ ${OMIL_SYSCHECK_SCRIPT_LOADED} = 0 ]; then . ${OMIL_SYSCHECK_SCRIPT} OMIL_SYSCHECK_SCRIPT_LOADED=1 fi IsThisSupportedGeneration if [ $? != 0 ]; then return ${STATUS_SYSTEM_NOT_SUPPORTED} fi fi return ${STATUS_NO_ERROR} } # dataeng_check_system_type ############################################################################### # Function: dataeng_check_fwsnmp # Description: Check status of SNMP port in OS firewall configuration # Returns: 0 = SNMP port is open, non-zero = SNMP port is closed ############################################################################### dataeng_check_fwsnmp() { # See if check has been disabled by the user if [ -f ${DENG_FWSNMP_OFF_FILE} ]; then return 0 fi # Check SNMP port in firewall ${DENG_FWSNMP_SCRIPT} FWSNMP_STATUS=$? if [ ${FWSNMP_STATUS} != 0 ]; then # It looks like the SNMP port is closed. Warn the user. echo "" echo ${DENG_MSG_OS_FIREWALL_SNMP_1} echo ${DENG_MSG_OS_FIREWALL_SNMP_2} echo ${DENG_MSG_OS_FIREWALL_SNMP_3} dataeng_supt_logmessage "${DENG_MSG_OS_FIREWALL_SNMP_1} ${DENG_MSG_OS_FIREWALL_SNMP_2} ${DENG_MSG_OS_FIREWALL_SNMP_3}" fi return ${FWSNMP_STATUS} } # dataeng_check_fwsnmp ############################################################################### # Function: dataeng_set_os_snmp_conf_vars # Description: Set variables needed to update OS SNMP configuration file # Returns: none ############################################################################### dataeng_set_os_snmp_conf_vars() { OS_SNMP_CONF_FILE_1="/etc/snmp/snmpd.conf" OS_SNMP_CONF_FILE_2="/etc/snmpd.conf" OS_SNMP_CONF_FILE_3="/etc/ucdsnmpd.conf" OS_SNMP_CONF_VIEW_SYS_CHK_1="^view.*systemview.*included.*system$" OS_SNMP_CONF_VIEW_SYS_CHK_2="^view.*systemview.*included[ ]*\.1.3.6.1.2.1.1$" OS_SNMP_CONF_VIEW_ALL_CHK="^view.*all.*included.*\.1" OS_SNMP_CONF_VIEW_ALL_ADD="view all included .1" OS_SNMP_CONF_ACCESS_SYS_CHK="^access.*notConfigGroup.*any.*noauth.*exact.*systemview.*none.*none$" OS_SNMP_CONF_ACCESS_ALL_CHK="^access.*notConfigGroup.*any.*noauth.*exact.*all" OS_SNMP_CONF_ACCESS_ALL_ADD="access notConfigGroup \"\" any noauth exact all none none" OS_SNMP_CONF_COMMENT_OLD_1="# Allow Dell OpenManage Server Agent to connect to ucd-snmp using SMUX" OS_SNMP_CONF_COMMENT_OLD_2="# Allow Server Administrator to connect to ucd-snmp using SMUX" OS_SNMP_CONF_COMMENT_DENG="# Allow Systems Management Data Engine SNMP to connect to snmpd using SMUX" OS_SNMP_CONF_SMUXPEER_DENG_CHK="smuxpeer.*\.1\.3\.6\.1\.4\.1\.674\.10892\.1" OS_SNMP_CONF_SMUXPEER_DENG_ADD="smuxpeer .1.3.6.1.4.1.674.10892.1" # check for OS SNMP configuration file # (different Linux distros put file in different locations) if [ -f ${OS_SNMP_CONF_FILE_1} ]; then OS_SNMP_CONF_FILE=${OS_SNMP_CONF_FILE_1} elif [ -f ${OS_SNMP_CONF_FILE_2} ]; then OS_SNMP_CONF_FILE=${OS_SNMP_CONF_FILE_2} elif [ -f ${OS_SNMP_CONF_FILE_3} ]; then OS_SNMP_CONF_FILE=${OS_SNMP_CONF_FILE_3} else OS_SNMP_CONF_FILE="" fi } # dataeng_set_os_snmp_conf_vars ############################################################################### # Function: dataeng_enablesnmp # Description: enable Data Engine SNMP # Returns: STATUS_NO_ERROR = Data Engine SNMP installed and enabled # STATUS_OS_SNMP_NOT_FOUND = OS SNMP support not installed # STATUS_DE_SNMP_NOT_FOUND = Data Engine SNMP not installed ############################################################################### dataeng_enablesnmp() { # check for OS SNMP agent and set configuration variables dataeng_set_os_snmp_conf_vars # check if OS SNMP support is installed if [ -z ${OS_SNMP_CONF_FILE} ]; then # OS SNMP support not installed echo ${DENG_MSG_OS_SNMP_NOTINSTALLED} dataeng_supt_logmessage "NOTE: ${DENG_MSG_OS_SNMP_NOTINSTALLED}" # mark Data Engine SNMP disabled touch ${DENG_DCSNMP_OFF_FILE} return ${STATUS_OS_SNMP_NOT_FOUND} fi # check if Data Engine SNMP is installed if [ ${DENG_DCSNMP_INSTALLED} = 0 ]; then # Data Engine SNMP not installed echo ${DENG_MSG_DE_SNMP_NOTINSTALLED} dataeng_supt_logmessage "NOTE: ${DENG_MSG_DE_SNMP_NOTINSTALLED}" # mark Data Engine SNMP disabled touch ${DENG_DCSNMP_OFF_FILE} return ${STATUS_DE_SNMP_NOT_FOUND} fi # OS SNMP and Data Engine SNMP installed; # make needed updates to OS SNMP configuration NEW_CONF_FILE="${OS_SNMP_CONF_FILE}.${DENG_SCRIPT_NAME}" SNMP_CONF_FILE_UPDATED=0 # check for "view" for whole MIB tree egrep -i "${OS_SNMP_CONF_VIEW_ALL_CHK}" ${OS_SNMP_CONF_FILE} >/dev/null if [ $? != 0 ]; then # determine line to add new "view" after # by looking for existing well-known "view" egrep -i "${OS_SNMP_CONF_VIEW_SYS_CHK_1}" ${OS_SNMP_CONF_FILE} >/dev/null if [ $? = 0 ]; then VIEW_CHK="${OS_SNMP_CONF_VIEW_SYS_CHK_1}" else egrep -i "${OS_SNMP_CONF_VIEW_SYS_CHK_2}" ${OS_SNMP_CONF_FILE} >/dev/null if [ $? = 0 ]; then VIEW_CHK="${OS_SNMP_CONF_VIEW_SYS_CHK_2}" else VIEW_CHK="" fi fi # check if well-known "view" was found if [ ! -z "${VIEW_CHK}" ]; then # create sed script to add "view" for whole MIB tree TMP_FILE=$(mktemp ${TMP:-/tmp}/${DENG_SCRIPT_NAME}.XXXXXXX) if [ $? = 0 ]; then echo "/${VIEW_CHK}/i\\" >>${TMP_FILE} echo "${OS_SNMP_CONF_VIEW_ALL_ADD}" >>${TMP_FILE} # add "view" for whole MIB tree sed -f ${TMP_FILE} ${OS_SNMP_CONF_FILE} >${NEW_CONF_FILE} mv -f ${NEW_CONF_FILE} ${OS_SNMP_CONF_FILE} rm -f ${TMP_FILE} SNMP_CONF_FILE_UPDATED=1 else echo "${DENG_SCRIPT_NAME}: mktemp failed to make filename" fi fi fi # check for "access" to whole MIB tree for default group egrep -i "${OS_SNMP_CONF_ACCESS_ALL_CHK}" ${OS_SNMP_CONF_FILE} >/dev/null if [ $? != 0 ]; then # check for default "access" configuration egrep -i "${OS_SNMP_CONF_ACCESS_SYS_CHK}" ${OS_SNMP_CONF_FILE} >/dev/null if [ $? = 0 ]; then # change default "access" configuration to allow # access to whole MIB tree for default group sed "s/${OS_SNMP_CONF_ACCESS_SYS_CHK}/${OS_SNMP_CONF_ACCESS_ALL_ADD}/" ${OS_SNMP_CONF_FILE} >${NEW_CONF_FILE} mv -f ${NEW_CONF_FILE} ${OS_SNMP_CONF_FILE} SNMP_CONF_FILE_UPDATED=1 fi fi # check for Data Engine SNMP "smuxpeer" entry egrep -i "${OS_SNMP_CONF_SMUXPEER_DENG_CHK}" ${OS_SNMP_CONF_FILE} >/dev/null if [ $? != 0 ]; then # add blank line if needed LAST_LINE="" while read LINE; do LAST_LINE="${LINE}" done < ${OS_SNMP_CONF_FILE} if [ "${LAST_LINE}" != "" ]; then echo "" >>${OS_SNMP_CONF_FILE} fi # add Data Engine SNMP "smuxpeer" entry echo "${OS_SNMP_CONF_COMMENT_DENG}" >>${OS_SNMP_CONF_FILE} echo "${OS_SNMP_CONF_SMUXPEER_DENG_ADD}" >>${OS_SNMP_CONF_FILE} SNMP_CONF_FILE_UPDATED=1 else # check if "smuxpeer" comment needs to be updated egrep -i "${OS_SNMP_CONF_COMMENT_OLD_1}" ${OS_SNMP_CONF_FILE} >/dev/null if [ $? = 0 ]; then # update "smuxpeer" comment sed "s/${OS_SNMP_CONF_COMMENT_OLD_1}/${OS_SNMP_CONF_COMMENT_DENG}/" ${OS_SNMP_CONF_FILE} >${NEW_CONF_FILE} mv -f ${NEW_CONF_FILE} ${OS_SNMP_CONF_FILE} else egrep -i "${OS_SNMP_CONF_COMMENT_OLD_2}" ${OS_SNMP_CONF_FILE} >/dev/null if [ $? = 0 ]; then # update "smuxpeer" comment sed "s/${OS_SNMP_CONF_COMMENT_OLD_2}/${OS_SNMP_CONF_COMMENT_DENG}/" ${OS_SNMP_CONF_FILE} >${NEW_CONF_FILE} mv -f ${NEW_CONF_FILE} ${OS_SNMP_CONF_FILE} fi fi fi # check for simple access control configuration; # if simple access control configuration found; # try to determine if SNMP access is restricted to localhost SIMPLE_ACCESS_CONTROL=0 LOCALHOST_ONLY=1 TMP_FILE=$(mktemp ${TMP:-/tmp}/${DENG_SCRIPT_NAME}.XXXXXXX) if [ $? = 0 ]; then egrep -i "^r[ow]community6*[[:blank:]]" ${OS_SNMP_CONF_FILE} >>${TMP_FILE} 2>&1 while read LINE; do SIMPLE_ACCESS_CONTROL=1 SOURCE=`echo ${LINE} | awk '{print $3}'` if [ "${SOURCE}" != "127.0.0.1" ] && [ "${SOURCE}" != "localhost" ]; then LOCALHOST_ONLY=0 break fi done < ${TMP_FILE} rm -f ${TMP_FILE} else echo "${DENG_SCRIPT_NAME}: mktemp failed to make filename" fi # check if simple access control configuration used and # if SNMP access appears to be restricted to localhost if [ ${SIMPLE_ACCESS_CONTROL} = 1 ] && [ ${LOCALHOST_ONLY} = 1 ]; then # SNMP access appears to be restricted to localhost DENG_MSG_OS_SNMP_ACCESS="NOTE: SNMP access appears to be restricted to localhost in ${OS_SNMP_CONF_FILE}" echo ${DENG_MSG_OS_SNMP_ACCESS} dataeng_supt_logmessage "${DENG_MSG_OS_SNMP_ACCESS}" fi # check if SNMP config file updated if [ ${SNMP_CONF_FILE_UPDATED} = 1 ]; then # check if SNMP agent started dataeng_supt_daemonstatus ${OS_SNMP_SVCNAME} >/dev/null if [ $? = ${STATUS_RUNNING} ]; then # SNMP agent needs to be restarted DENG_MSG_OS_SNMP_RESTART="NOTE: ${OS_SNMP_SVCNAME} must be restarted to activate changes to ${OS_SNMP_CONF_FILE}" echo ${DENG_MSG_OS_SNMP_RESTART} dataeng_supt_logmessage "${DENG_MSG_OS_SNMP_RESTART}" fi fi # check SNMP port in firewall dataeng_check_fwsnmp # mark Data Engine SNMP enabled rm -f ${DENG_DCSNMP_OFF_FILE} echo ${DENG_MSG_DE_SNMP_ENABLED} return ${STATUS_NO_ERROR} } # dataeng_enablesnmp ############################################################################### # Function: dataeng_disablesnmp # Description: Disable Data Engine SNMP # Returns: STATUS_NO_ERROR = Data Engine SNMP installed and disabled # STATUS_OS_SNMP_NOT_FOUND = OS SNMP support not installed # STATUS_DE_SNMP_NOT_FOUND = Data Engine SNMP not installed ############################################################################### dataeng_disablesnmp() { # check for OS SNMP agent and set configuration variables dataeng_set_os_snmp_conf_vars # always mark Data Engine SNMP disabled touch ${DENG_DCSNMP_OFF_FILE} # check if OS SNMP support is installed if [ -z ${OS_SNMP_CONF_FILE} ]; then # OS SNMP support not installed echo ${DENG_MSG_OS_SNMP_NOTINSTALLED} return ${STATUS_OS_SNMP_NOT_FOUND} fi # check if Data Engine SNMP is installed if [ ${DENG_DCSNMP_INSTALLED} = 0 ]; then # Data Engine SNMP not installed echo ${DENG_MSG_DE_SNMP_NOTINSTALLED} return ${STATUS_DE_SNMP_NOT_FOUND} fi # OS SNMP and Data Engine SNMP are installed; # make needed updates to OS SNMP configuration NEW_CONF_FILE="${OS_SNMP_CONF_FILE}.${DENG_SCRIPT_NAME}" # check for Data Engine SNMP "smuxpeer" entry egrep -i "${OS_SNMP_CONF_SMUXPEER_DENG_CHK}" ${OS_SNMP_CONF_FILE} >/dev/null if [ $? = 0 ]; then # remove Data Engine SNMP "smuxpeer" entry egrep -iv "${OS_SNMP_CONF_SMUXPEER_DENG_CHK}" ${OS_SNMP_CONF_FILE} >${NEW_CONF_FILE} mv -f ${NEW_CONF_FILE} ${OS_SNMP_CONF_FILE} fi # check for Data Engine SNMP "smuxpeer" comment egrep -i "${OS_SNMP_CONF_COMMENT_DENG}" ${OS_SNMP_CONF_FILE} >/dev/null if [ $? = 0 ]; then # remove Data Engine SNMP "smuxpeer" comment egrep -iv "${OS_SNMP_CONF_COMMENT_DENG}" ${OS_SNMP_CONF_FILE} >${NEW_CONF_FILE} mv -f ${NEW_CONF_FILE} ${OS_SNMP_CONF_FILE} fi # check for old "smuxpeer" comment egrep -i "${OS_SNMP_CONF_COMMENT_OLD_1}" ${OS_SNMP_CONF_FILE} >/dev/null if [ $? = 0 ]; then # remove old SNMP "smuxpeer" comment egrep -iv "${OS_SNMP_CONF_COMMENT_OLD_1}" ${OS_SNMP_CONF_FILE} >${NEW_CONF_FILE} mv -f ${NEW_CONF_FILE} ${OS_SNMP_CONF_FILE} fi # check for old "smuxpeer" comment egrep -i "${OS_SNMP_CONF_COMMENT_OLD_2}" ${OS_SNMP_CONF_FILE} >/dev/null if [ $? = 0 ]; then # remove old SNMP "smuxpeer" comment egrep -iv "${OS_SNMP_CONF_COMMENT_OLD_2}" ${OS_SNMP_CONF_FILE} >${NEW_CONF_FILE} mv -f ${NEW_CONF_FILE} ${OS_SNMP_CONF_FILE} fi # stop Data Engine SNMP if started dataeng_supt_daemonstatus ${DENG_DCSNMP} >/dev/null if [ $? = 0 ]; then dataeng_supt_daemonstop ${DENG_DCSNMP} fi echo ${DENG_MSG_DE_SNMP_DISABLED} return ${STATUS_NO_ERROR} } # dataeng_disablesnmp ############################################################################### # Function: dataeng_getsnmpstatus # Description: Get Data Engine SNMP status # Returns: STATUS_NO_ERROR = Data Engine SNMP installed # STATUS_OS_SNMP_NOT_FOUND = OS SNMP support not installed # STATUS_DE_SNMP_NOT_FOUND = Data Engine SNMP not installed ############################################################################### dataeng_getsnmpstatus() { # check for OS SNMP agent and set configuration variables dataeng_set_os_snmp_conf_vars # check if OS SNMP support is installed if [ -z ${OS_SNMP_CONF_FILE} ]; then # OS SNMP support not installed echo ${DENG_MSG_OS_SNMP_NOTINSTALLED} return ${STATUS_OS_SNMP_NOT_FOUND} fi # check if Data Engine SNMP is installed if [ ${DENG_DCSNMP_INSTALLED} = 0 ]; then # Data Engine SNMP not installed echo ${DENG_MSG_DE_SNMP_NOTINSTALLED} return ${STATUS_DE_SNMP_NOT_FOUND} fi # OS SNMP and Data Engine SNMP are installed; # get Data Engine SNMP status if [ ! -f ${DENG_DCSNMP_OFF_FILE} ]; then echo ${DENG_MSG_DE_SNMP_ENABLED} else echo ${DENG_MSG_DE_SNMP_DISABLED} fi return ${STATUS_NO_ERROR} } # dataeng_getsnmpstatus ############################################################################### # Function: dataeng_supt_daemonrunning <daemon> <pid list> # Description: Check if daemon is running # Returns: 0 = daemon running, 1 = daemon not running ############################################################################### dataeng_supt_daemonrunning() { local daemon pidlist daemon=$1 if [ ${OS_KERNEL_VMKERNEL} = 1 ]; then pidlist=$(pidof -o $$ -o ${PPID} -o %PPID -x ${daemon}) if [ -n "${pidlist}" ]; then return 0 fi else pidlist="$2" if [ -n "${pidlist}" ]; then for pid in ${pidlist}; do if [ -d /proc/${pid} ]; then return 0 fi done fi fi return 1 } # dataeng_supt_daemonrunning ############################################################################### # Function: dataeng_supt_daemonstart <daemon pathfilename> <daemon options> # Description: Start a daemon # Returns: LSB status codes ############################################################################### dataeng_supt_daemonstart() { DAEMON_PFNAME="$1" DAEMON=`basename ${DAEMON_PFNAME}` shift # set LD_LIBRARY_PATH if needed if [ ${OS_KERNEL_VMKERNEL} = 1 ] && [ -d /lib/cim ]; then if [ ${DENG_LD_LIBRARY_PATH_SET} != 1 ]; then export LD_LIBRARY_PATH=/lib/cim:${LD_LIBRARY_PATH} DENG_LD_LIBRARY_PATH_SET=1 fi fi if [ ${OS_SCRIPT_FUNCTIONS} = ${OS_SCRIPT_FUNCTIONS_RH} ]; then # Start daemon daemon "${DAEMON_PFNAME}" $* STATUS=$? SHOW_STATUS=0 echo else # Start daemon "${DAEMON_PFNAME}" $* if [ $? = 0 ]; then STATUS=${STATUS_NO_ERROR} else STATUS=${STATUS_GENERIC_ERROR} fi SHOW_STATUS=1 fi if [ ${SHOW_STATUS} = 1 ]; then # Display and log status if [ ${STATUS} = ${STATUS_NO_ERROR} ]; then dataeng_supt_showsuccess "" dataeng_supt_logmessage "${DAEMON} startup succeeded" else dataeng_supt_showfailure "" dataeng_supt_logmessage "${DAEMON} startup failed" fi fi return ${STATUS} } # dataeng_supt_daemonstart ############################################################################### # Function: dataeng_supt_daemonstop <daemon> # Description: Stop a daemon # Returns: LSB status codes ############################################################################### dataeng_supt_daemonstop() { DAEMON="$1" STATUS=${STATUS_GENERIC_ERROR} # Check for daemon name if [ -z ${DAEMON} ]; then return ${STATUS} fi # Get list of pids for daemon PIDLIST="" # Check for pid file in standard location PIDFILE="/opt/dell/srvadmin/var/run/${DAEMON}.pid" if [ -f ${PIDFILE} ]; then # Get list of pids from pid file read LINE < ${PIDFILE} for PID in ${LINE}; do if [ -d /proc/${PID} ]; then PIDLIST="${PIDLIST} ${PID}" fi done fi # Check if list of pids found in pid file if [ -z ${PIDLIST} ]; then # Get list of pids using pidof PIDLIST=`pidof -o $$ -o ${PPID} -o %PPID -x ${DAEMON}` fi # Check if list of pids found for daemon if [ -n "${PIDLIST}" ]; then # Find pid for main thread; it should be lowest numbered pid PIDMAIN=0 for PID in ${PIDLIST}; do if [ ${PIDMAIN} -eq 0 ] || [ ${PID} -lt ${PIDMAIN} ]; then PIDMAIN=${PID} fi done # Check if pid for main thread found if [ ${PIDMAIN} != 0 ]; then # Signal main thread to shutdown kill -TERM ${PIDMAIN} usleep 100000 # Wait up to 60 seconds for all daemon threads to go away SECS=0 while [ ${SECS} -lt 60 ]; do if dataeng_supt_daemonrunning "${DAEMON}" "${PIDLIST}"; then # At least one daemon thread is still running sleep 1 SECS=$((SECS + 1)) else # No daemon threads are running break fi done # Check again in case timeout occurred if dataeng_supt_daemonrunning "${DAEMON}" "${PIDLIST}"; then # Refresh list of pids and issue KILL for all remaining threads PIDLIST=`pidof -o $$ -o ${PPID} -o %PPID -x ${DAEMON}` kill -KILL ${PIDLIST} usleep 100000 fi # Check again for return code dataeng_supt_daemonrunning "${DAEMON}" "${PIDLIST}" if [ $? != 0 ]; then # No daemon threads are running STATUS=${STATUS_NO_ERROR} fi fi fi # Display and log status if [ ${STATUS} = ${STATUS_NO_ERROR} ]; then dataeng_supt_showsuccess "" dataeng_supt_logmessage "${DAEMON} shutdown succeeded" else dataeng_supt_showfailure "" dataeng_supt_logmessage "${DAEMON} shutdown failed" fi return ${STATUS} } # dataeng_supt_daemonstop ############################################################################### # Function: dataeng_supt_daemonstatus <daemon> # Description: Get current status of a daemon # Returns: LSB status code ############################################################################### dataeng_supt_daemonstatus() { DAEMON="$1" # Check for daemon name if [ -z ${DAEMON} ]; then return ${STATUS_UNKNOWN} fi # Get list of pids using pidof PIDLIST=`pidof -o $$ -o ${PPID} -o %PPID -x ${DAEMON}` if [ -n "${PIDLIST}" ]; then echo "${DAEMON} (pid ${PIDLIST}) is running" return ${STATUS_RUNNING} fi # Check for pid file in standard location PIDFILE="/opt/dell/srvadmin/var/run/${DAEMON}.pid" if [ -f ${PIDFILE} ]; then echo "${DAEMON} is dead and /opt/dell/srvadmin/var/run pid file exists" return ${STATUS_DEAD_PIDFILE_EXISTS} fi # Check for lock file in standard location LOCKFILE="${OS_SUBSYS_LOCK_DIR}/${daemon}" if [ -f ${LOCKFILE} ]; then echo "${DAEMON} is dead and /opt/dell/srvadmin/var/lock lock file exists" return ${STATUS_DEAD_LOCKFILE_EXISTS} fi echo "${DAEMON} is stopped" return ${STATUS_NOT_RUNNING} } # dataeng_supt_daemonstatus ############################################################################### # Function: dataeng_supt_showsuccess <message> # Description: Display service success message # Returns: none ############################################################################### dataeng_supt_showsuccess() { MSG="$1" if [ ${OS_SCRIPT_FUNCTIONS} = ${OS_SCRIPT_FUNCTIONS_LSB} ]; then log_success_msg "${MSG}" elif [ ${OS_SCRIPT_FUNCTIONS} = ${OS_SCRIPT_FUNCTIONS_RH} ]; then echo -n "${MSG}" echo_success echo else echo -n "${MSG}" echo -en \\033[45G echo "OK" fi } # dataeng_supt_showsuccess ############################################################################### # Function: dataeng_supt_showfailure <message> # Description: Display service failure message # Returns: none ############################################################################### dataeng_supt_showfailure() { MSG="$1" if [ ${OS_SCRIPT_FUNCTIONS} = ${OS_SCRIPT_FUNCTIONS_LSB} ]; then log_failure_msg "${MSG}" elif [ ${OS_SCRIPT_FUNCTIONS} = ${OS_SCRIPT_FUNCTIONS_RH} ]; then echo -n "${MSG}" echo_failure echo else echo -n "${MSG}" echo -en \\033[45G echo "FAILED" fi } # dataeng_supt_showsuccess ############################################################################### # Function: dataeng_supt_showwarning <message> # Description: Display service warning message # Returns: none ############################################################################### dataeng_supt_showwarning() { MSG="$1" if [ ${OS_SCRIPT_FUNCTIONS} = ${OS_SCRIPT_FUNCTIONS_LSB} ]; then log_warning_msg "${MSG}" elif [ ${OS_SCRIPT_FUNCTIONS} = ${OS_SCRIPT_FUNCTIONS_RH} ]; then echo -n "${MSG}" echo_warning echo else echo -n "${MSG}" echo -en \\033[45G echo "WARNING" fi } # dataeng_supt_showwarning ############################################################################### # Function: dataeng_supt_logmessage <message> # Description: Log message to OS log # Returns: none ############################################################################### dataeng_supt_logmessage() { MSG="$1" # Log message to OS log logger -t "${DENG_SCRIPT_NAME}" "${MSG}" } # dataeng_supt_logmessage ############################################################################### # End Functions ############################################################################### ############################################################################### # Check command line parameter for action to perform ############################################################################### case "$1" in start) # start service dataeng_start EXIT_STATUS=$? ;; stop) # stop service dataeng_stop EXIT_STATUS=$? ;; restart|force-reload) # restart service dataeng_stop dataeng_start EXIT_STATUS=$? ;; status) # print and return current status of service dataeng_status EXIT_STATUS=$? ;; status-quiet) # return current status of service dataeng_status >/dev/null EXIT_STATUS=$? ;; statusreturnlsb) # return 0 to indicate that the return values returned by the "status" # and "status-quiet" commands follow the LSB standard. # previous versions of this script that were not standard will return # a 1 because this command was not supported in such versions. EXIT_STATUS=0 ;; reload) # reload configuration echo "${DENG_SCRIPT_NAME}: reload not supported" EXIT_STATUS=${STATUS_NOT_IMPLEMENTED} ;; enablesnmp) # enable Data Engine SNMP dataeng_enablesnmp EXIT_STATUS=$? ;; disablesnmp) # disable Data Engine SNMP dataeng_disablesnmp EXIT_STATUS=$? ;; getsnmpstatus) # get Data Engine SNMP enable/disable status dataeng_getsnmpstatus EXIT_STATUS=$? ;; startdaemon|startd) # start Data Engine daemon dataeng_startdaemon "$2" EXIT_STATUS=$? ;; stopdaemon|stopd) # stop Data Engine daemon dataeng_stopdaemon "$2" EXIT_STATUS=$? ;; restartdaemon|restartd) # restart Data Engine daemon dataeng_stopdaemon "$2" dataeng_startdaemon "$2" EXIT_STATUS=$? ;; check-fwsnmp) dataeng_check_fwsnmp EXIT_STATUS=$? ;; check-fwsnmp-off) touch ${DENG_FWSNMP_OFF_FILE} EXIT_STATUS=${STATUS_NO_ERROR} ;; check-fwsnmp-on) rm -f ${DENG_FWSNMP_OFF_FILE} EXIT_STATUS=${STATUS_NO_ERROR} ;; *) echo "${DENG_SCRIPT_NAME}: Invalid argument" echo "Usage: ${DENG_SCRIPT_NAME} {start|stop|restart|force-reload|status|enablesnmp|disablesnmp|getsnmpstatus}" EXIT_STATUS=${STATUS_INVALID_ARG} esac exit ${EXIT_STATUS} ############################################################################### # End Script ###############################################################################