#---------------------------------------------------------------------------- # /var/install/include/nagioslib - library for eisfair scripts # # Copyright (c) 2010 Ansgar Puester # # Creation: 19.02.2005 ansgar # Last Update: $Id$ # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. #---------------------------------------------------------------------------- #---------------------------------------------------------------------------- # interface description #---------------------------------------------------------------------------- # # check_duplicates() Check duplicates # $1 name of counter variable # $2 name of value variable # e.g. NAGIOS_HOST_N NAGIOS_HOST_#_NAME # # arg_count() Get number of $ARG#$ arguments # $1 NAGIOS_COMMAND_#_OPTION # e.g. '-H $HOSTADDRESS$ -n $ARG1$ -t $ARG2$' # # load_nagios_array() Load variables into nagios_array # $1 counter name # $2 variable name # e.g. load_nagios_array 'NAGIOS_HOST_N' 'NAGIOS_HOST_#_NAME' # # load_nagios_host_x_name_array() # Load array nagios_host_x_name_array from /etc/config.d/nagios-host # # load_nagios_hostgroup_x_name_array() # Load array nagios_hostgroup_x_name_array from /etc/config.d/nagios-hostgroup # # load_nagios_service_x_service_description_array() # Load array nagios_service_x_service_description_array from /etc/config.d/nagios-service # # load_nagios_contacts_x_name_array() # Load array nagios_contacts_x_name_array from /etc/config.d/nagios-contacts # # load_nagios_contactgroup_x_name_array() # Load array nagios_contactgroup_x_name_array from /etc/config.d/nagios-contactgroup # # load_nagios_timeperiod_x_name_array() # Load array nagios_timeperiod_x_name_array from /etc/config.d/nagios-timeperiod # # load_nagios_host_templates_contact_x_name_array() # Load array nagios_host_templates_contact_x_name_array from /etc/config.d/nagios-templates # # load_nagios_service_interval_templates_x_name_array() # Load array nagios_service_interval_templates_x_name_array from /etc/config.d/nagios-templates # # load_nagios_contact_temp_x_name_array() # Load array nagios_contact_temp_x_name_array from /etc/config.d/nagios-templates # # load_nagios_host_templates_x_name_array() # Load array nagios_host_templates_x_name_array from /etc/config.d/nagios-templates # # load_nagios_service_templates_x_name_array() # Load array nagios_service_templates_x_name_array from /etc/config.d/nagios-templates # # load_nagios_eventhandler_x_name_array() # Load array nagios_service_eventhandler_x_name_array from /etc/config.d/nagios-eventhandler # # check_x_y() # $1 counter name # $2 sub counter name # $3 variable name # $4 array name # e.g. check_x_y NAGIOS_HOSTGROUP_N NAGIOS_HOSTGROUP_#_MEMLIST_N NAGIOS_HOSTGROUP_#_MEMLIST_#_MEMBERS nagios_host_x_name_array # # check_x() # $1 counter name # $2 variable name # $3 array name # e.g. check_x NAGIOS_CONTACTS_N NAGIOS_CONTACTS_#_CONTACTGROUPS nagios_contactgroup_x_name_array # #---------------------------------------------------------------------------- #============================================================================ # only include this file once #============================================================================ if [ "$_NAGIOSLIB" != "true" ] then _NAGIOSLIB='true' check_duplicates() { local _COUNT=$1 local _VAR=$2 local _ACTIVE=$3 local -a _ARRAY local _IX local _IY local _C local _V local _A local _AV local _AC local _RETURN=0 local _C1 local _C2 # fill _ARRAY eval _C=\$$_COUNT # echo "_C=$_C" if [ "$_C" = '' ]; then mecho --error "error: wrong variable $_COUNT" _RETURN=1 else # check duplicates only if "${_C}" > 0 if [ "${_C}" -gt 0 ] then mecho "checking duplicates in $_VAR ..." progress_bar 0 "${_C}" _V=$(echo $_VAR | sed "s|#|'\${_IX}'|") _V="'"$_V"'" # _ACTIVE variable? if [ -n "$_ACTIVE" ] then _A=$(echo $_ACTIVE | sed "s|#|'\${_IX}'|") _A="'"$_A"'" fi _IX=1 while [ "${_IX}" -le "${_C}" ] do # eval currentHOSTName='${NAGIOS_HOST_'${idx}'_NAME}' eval _AV=\$$_V eval _AV=\$$_AV if [ -n "$_ACTIVE" ] then eval _AC=\$$_A eval _AC=\$$_AC if [ "$_AC" = 'yes' ] then _ARRAY[_IX]=$_AV fi else _ARRAY[_IX]=$_AV fi _IX=`/usr/bin/expr ${_IX} + 1` prog=$((${_IX} / 2)) progress_bar ${prog} "${_C}" done # check _ARRAY _IX=1 while [ "${_IX}" -le "${_C}" ] do #echo ${_ARRAY[_IX]} _IY=`/usr/bin/expr ${_IX} + 1` while [ "${_IY}" -le "${_C}" ] do if [ -n "${_ARRAY[_IX]}" ] then if [ "${_ARRAY[_IX]}" = "${_ARRAY[_IY]}" ]; then #_C1=$(echo $_VAR | sed "s|#|$_IX|") #_C2=$(echo $_VAR | sed "s|#|$_IY|") mecho mecho --error "error: duplicate value '${_ARRAY[_IX]}' in $_VAR $_IX and $_IY" _RETURN=1 fi fi _IY=`/usr/bin/expr ${_IY} + 1` done _IX=`/usr/bin/expr ${_IX} + 1` prog=$(( (${_C} / 2) + (${_IX} / 2) )) progress_bar ${prog} "${_C}" done progress_bar "${_C}" "${_C}" mecho fi fi #TEST echo "${_ARRAY[@]}" return $_RETURN } arg_count() { arg_max=0 for elem in $1 do case $elem in \$ARG*\$) c=$(echo "$elem" | sed 's/^\$ARG//;s/\$$//') [ "$c" -gt "$arg_max" ] && arg_max=$c ;; esac done echo "${arg_max}" } declare -A nagios_array declare -A nagios_array_idx load_nagios_array() { local count_name=$1 local var_name=$2 local active_name=$3 local _C local a_ix local _AVAR local _AVALUE local _ACVAR local _ACVALUE local K _RETURN=0 #echo "load_nagios_array: Anzahl Elemente: ${!nagios_array[@]}" # clean nagios_array for K in "${!nagios_array[@]}"; do unset nagios_array["$K"]; done for K in "${!nagios_array_idx[@]}"; do unset nagios_array_idx["$K"]; done eval _C=\$"$count_name" #echo "_C=$_C" if [[ "$count_name" = '' || "$_C" = '' ]]; then mecho --error "error: wrong or undefined variable $count_name" _RETURN=1 else true a_ix=1 while [ $a_ix -le $_C ] do # get value of _VAR _AVAR=$(echo "$var_name" | sed "s|#|$a_ix|") eval _AVALUE=\$$_AVAR # check active if [ -n "$active_name" ] then _ACVAR=$(echo "$active_name" | sed "s|#|${a_ix}|") eval _ACVALUE=\$$_ACVAR if [ "$_ACVALUE" = 'yes' ] then nagios_array[$_AVALUE]=$a_ix nagios_array_idx[$a_ix]="$_AVALUE" fi else nagios_array[$_AVALUE]=$a_ix nagios_array_idx[$a_ix]="$_AVALUE" fi #echo "+++TEST _AVALUE=$_AVALUE a_ix=$a_ix" let a_ix=$a_ix+1 done #echo "${nagios_array[@]}" #for K in "${!nagios_array[@]}"; do echo $K --- ${nagios_array[$K]}; done #for K in "${!nagios_array_idx[@]}"; do echo $K --- ${nagios_array_idx[$K]}; done fi return $_RETURN } # NAGIOS_HOST_#_NAME # NAGIOS_HOSTGROUP_#_NAME # NAGIOS_SERVICE_#_SERVICE_DESCRIPTION # NAGIOS_CONTACTS_#_NAME # NAGIOS_CONTACTGROUP_#_NAME # NAGIOS_TIMEPERIOD_#_NAME # NAGIOS_COMMAND_#_NAME declare -A nagios_host_x_name_array declare -A nagios_host_x_name_array_idx load_nagios_host_x_name_array() { local K # clean nagios_host_x_name_array for K in "${!nagios_host_x_name_array[@]}"; do unset nagios_host_x_name_array["$K"]}; done for K in "${!nagios_host_x_name_array_idx[@]}"; do unset nagios_host_x_name_array_idx["$K"]}; done # load values into nagios_array load_nagios_array 'NAGIOS_HOST_N' 'NAGIOS_HOST_#_NAME' [ ! "$?" = '0' ] && return 1 # copy values to nagios_host_x_name_array for K in "${!nagios_array[@]}" do nagios_host_x_name_array[$K]=${nagios_array[$K]} done for K in "${!nagios_array_idx[@]}" do nagios_host_x_name_array_idx[$K]=${nagios_array_idx[$K]} done # for K in "${!nagios_host_x_name_array[@]}"; do echo $K --- ${nagios_host_x_name_array[$K]}; done # for K in "${!nagios_host_x_name_array_idx[@]}"; do echo $K --- ${nagios_host_x_name_array_idx[$K]}; done } declare -A nagios_hostgroup_x_name_array declare -A nagios_hostgroup_x_name_array_idx load_nagios_hostgroup_x_name_array() { local K # clean nagios_hostgroup_x_name_array for K in "${!nagios_hostgroup_x_name_array[@]}"; do unset nagios_hostgroup_x_name_array["$K"]}; done for K in "${!nagios_hostgroup_x_name_array_idx[@]}"; do unset nagios_hostgroup_x_name_array_idx["$K"]}; done # load values into nagios_array load_nagios_array 'NAGIOS_HOSTGROUP_N' 'NAGIOS_HOSTGROUP_#_NAME' [ ! "$?" = '0' ] && return 1 # copy values to nagios_hostgroup_x_name_array for K in "${!nagios_array[@]}" do nagios_hostgroup_x_name_array[$K]=${nagios_array[$K]} done for K in "${!nagios_array_idx[@]}" do nagios_hostgroup_x_name_array_idx[$K]=${nagios_array_idx[$K]} done # for K in "${!nagios_hostgroup_x_name_array[@]}"; do echo $K --- ${nagios_hostgroup_x_name_array[$K]}; done # for K in "${!nagios_hostgroup_x_name_array_idx[@]}"; do echo $K --- ${nagios_hostgroup_x_name_array_idx[$K]}; done } declare -A nagios_service_x_service_description_array declare -A nagios_service_x_service_description_array_idx load_nagios_service_x_service_description_array() { local K # clean nagios_service_x_service_description_array for K in "${!nagios_service_x_service_description_array[@]}"; do unset nagios_service_x_service_description_array["$K"]}; done for K in "${!nagios_service_x_service_description_array_idx[@]}"; do unset nagios_service_x_service_description_array_idx["$K"]}; done # load values into nagios_array load_nagios_array 'NAGIOS_SERVICE_N' 'NAGIOS_SERVICE_#_SERVICE_DESCRIPTION' [ ! "$?" = '0' ] && return 1 # copy values to nagios_service_x_service_description_array for K in "${!nagios_array[@]}" do nagios_service_x_service_description_array[$K]=${nagios_array[$K]} done for K in "${!nagios_array_idx[@]}" do nagios_service_x_service_description_array_idx[$K]=${nagios_array_idx[$K]} done # for K in "${!nagios_service_x_service_description_array[@]}"; do echo $K --- ${nagios_service_x_service_description_array[$K]}; done # for K in "${!nagios_service_x_service_description_array_idx[@]}"; do echo $K --- ${nagios_service_x_service_description_array_idx[$K]}; done } declare -A nagios_contacts_x_name_array declare -A nagios_contacts_x_name_array_idx load_nagios_contacts_x_name_array() { local K # clean nagios_contacts_x_name_array for K in "${!nagios_contacts_x_name_array[@]}"; do unset nagios_contacts_x_name_array["$K"]}; done for K in "${!nagios_contacts_x_name_array_idx[@]}"; do unset nagios_contacts_x_name_array_idx["$K"]}; done # load values into nagios_array load_nagios_array 'NAGIOS_CONTACTS_N' 'NAGIOS_CONTACTS_#_NAME' [ ! "$?" = '0' ] && return 1 # copy values to nagios_contacts_x_name_array for K in "${!nagios_array[@]}" do nagios_contacts_x_name_array[$K]=${nagios_array[$K]} done for K in "${!nagios_array_idx[@]}" do nagios_contacts_x_name_array_idx[$K]=${nagios_array_idx[$K]} done # for K in "${!nagios_contacts_x_name_array[@]}"; do echo $K --- ${nagios_contacts_x_name_array[$K]}; done # for K in "${!nagios_contacts_x_name_array_idx[@]}"; do echo $K --- ${nagios_contacts_x_name_array_idx[$K]}; done } declare -A nagios_contactgroup_x_name_array declare -A nagios_contactgroup_x_name_array_idx load_nagios_contactgroup_x_name_array() { local K # clean nagios_contactgroup_x_name_array for K in "${!nagios_contactgroup_x_name_array[@]}"; do unset nagios_contactgroup_x_name_array["$K"]}; done for K in "${!nagios_contactgroup_x_name_array_idx[@]}"; do unset nagios_contactgroup_x_name_array_idx["$K"]}; done # load values into nagios_array load_nagios_array 'NAGIOS_CONTACTGROUP_N' 'NAGIOS_CONTACTGROUP_#_NAME' [ ! "$?" = '0' ] && return 1 # copy values to nagios_contactgroup_x_name_array for K in "${!nagios_array[@]}" do nagios_contactgroup_x_name_array[$K]=${nagios_array[$K]} done for K in "${!nagios_array_idx[@]}" do nagios_contactgroup_x_name_array_idx[$K]=${nagios_array_idx[$K]} done # for K in "${!nagios_contactgroup_x_name_array[@]}"; do echo $K --- ${nagios_contactgroup_x_name_array[$K]}; done # for K in "${!nagios_contactgroup_x_name_array_idx[@]}"; do echo $K --- ${nagios_contactgroup_x_name_array_idx[$K]}; done } declare -A nagios_timeperiod_x_name_array declare -A nagios_timeperiod_x_name_array_idx load_nagios_timeperiod_x_name_array() { local K # clean nagios_timeperiod_x_name_array for K in "${!nagios_timeperiod_x_name_array[@]}"; do unset nagios_timeperiod_x_name_array["$K"]}; done for K in "${!nagios_timeperiod_x_name_array_idx[@]}"; do unset nagios_timeperiod_x_name_array_idx["$K"]}; done # load values into nagios_array load_nagios_array 'NAGIOS_TIMEPERIOD_N' 'NAGIOS_TIMEPERIOD_#_NAME' [ ! "$?" = '0' ] && return 1 # copy values to nagios_timeperiod_x_name_array for K in "${!nagios_array[@]}" do nagios_timeperiod_x_name_array[$K]=${nagios_array[$K]} done for K in "${!nagios_array_idx[@]}" do nagios_timeperiod_x_name_array_idx[$K]=${nagios_array_idx[$K]} done # for K in "${!nagios_timeperiod_x_name_array[@]}"; do echo $K --- ${nagios_timeperiod_x_name_array[$K]}; done # for K in "${!nagios_timeperiod_x_name_array_idx[@]}"; do echo $K --- ${nagios_timeperiod_x_name_array_idx[$K]}; done } declare -A nagios_command_x_name_array declare -A nagios_command_x_name_array_idx load_nagios_command_x_name_array() { local K # clean nagios_command_x_name_array for K in "${!nagios_command_x_name_array[@]}"; do unset nagios_command_x_name_array["$K"]}; done for K in "${!nagios_command_x_name_array_idx[@]}"; do unset nagios_command_x_name_array_idx["$K"]}; done # load values into nagios_array load_nagios_array 'NAGIOS_COMMAND_N' 'NAGIOS_COMMAND_#_NAME' [ ! "$?" = '0' ] && return 1 # copy values to nagios_command_x_name_array for K in "${!nagios_array[@]}" do nagios_command_x_name_array[$K]=${nagios_array[$K]} done for K in "${!nagios_array_idx[@]}" do nagios_command_x_name_array_idx[$K]=${nagios_array_idx[$K]} done # for K in "${!nagios_command_x_name_array[@]}"; do echo $K --- ${nagios_command_x_name_array[$K]}; done # for K in "${!nagios_command_x_name_array_idx[@]}"; do echo $K --- ${nagios_command_x_name_array_idx[$K]}; done } # HOST_TEMPLATES_CONTACT_#_NAME # SERVICE_INTERVAL_TEMPLATES_#_NAME # CONTACT_TEMP_#_NAME # HOST_TEMPLATES_#_NAME # SERVICE_TEMPLATES_#_NAME declare -A nagios_host_templates_contact_x_name_array declare -A nagios_host_templates_contact_x_name_array_idx load_nagios_host_templates_contact_x_name_array() { local K # clean host_templates_contact_x_name_array for K in "${!host_templates_contact_x_name_array[@]}"; do unset host_templates_contact_x_name_array["$K"]}; done for K in "${!host_templates_contact_x_name_array_idx[@]}"; do unset host_templates_contact_x_name_array_idx["$K"]}; done # load values into nagios_array load_nagios_array 'NAGIOS_HOST_TEMPLATES_CONTACT_N' 'NAGIOS_HOST_TEMPLATES_CONTACT_#_NAME' [ ! "$?" = '0' ] && return 1 # copy values to nagios_host_templates_contact_x_name_array for K in "${!nagios_array[@]}" do nagios_host_templates_contact_x_name_array[$K]=${nagios_array[$K]} done for K in "${!nagios_array_idx[@]}" do nagios_host_templates_contact_x_name_array_idx[$K]=${nagios_array_idx[$K]} done # for K in "${!nagios_host_templates_contact_x_name_array[@]}"; do echo $K --- ${nagios_host_templates_contact_x_name_array[$K]}; done # for K in "${!nagios_host_templates_contact_x_name_array_idx[@]}"; do echo $K --- ${nagios_host_templates_contact_x_name_array_idx[$K]}; done } declare -A nagios_service_interval_templates_x_name_array declare -A nagios_service_interval_templates_x_name_array_idx load_nagios_service_interval_templates_x_name_array() { local K # clean nagios_service_interval_templates_x_name_array for K in "${!nagios_service_interval_templates_x_name_array[@]}"; do unset nagios_service_interval_templates_x_name_array["$K"]}; done for K in "${!nagios_service_interval_templates_x_name_array_idx[@]}"; do unset nagios_service_interval_templates_x_name_array_idx["$K"]}; done # load values into nagios_array load_nagios_array 'NAGIOS_SERVICE_INTERVAL_TEMPLATES_N' 'NAGIOS_SERVICE_INTERVAL_TEMPLATES_#_NAME' [ ! "$?" = '0' ] && return 1 # copy values to nagios_service_interval_templates_x_name_array for K in "${!nagios_array[@]}" do nagios_service_interval_templates_x_name_array[$K]=${nagios_array[$K]} done for K in "${!nagios_array_idx[@]}" do nagios_service_interval_templates_x_name_array_idx[$K]=${nagios_array_idx[$K]} done # for K in "${!nagios_service_interval_templates_x_name_array[@]}"; do echo $K --- ${nagios_service_interval_templates_x_name_array[$K]}; done # for K in "${!nagios_service_interval_templates_x_name_array_idx[@]}"; do echo $K --- ${nagios_service_interval_templates_x_name_array_idx[$K]}; done } declare -A nagios_contact_temp_x_name_array declare -A nagios_contact_temp_x_name_array_idx load_nagios_contact_temp_x_name_array() { local K # clean nagios_contact_temp_x_name_array for K in "${!nagios_contact_temp_x_name_array[@]}"; do unset nagios_contact_temp_x_name_array["$K"]}; done for K in "${!nagios_contact_temp_x_name_array_idx[@]}"; do unset nagios_contact_temp_x_name_array_idx["$K"]}; done # load values into nagios_array load_nagios_array 'NAGIOS_CONTACT_TEMP_N' 'NAGIOS_CONTACT_TEMP_#_NAME' [ ! "$?" = '0' ] && return 1 # copy values to nagios_contact_temp_x_name_array for K in "${!nagios_array[@]}" do nagios_contact_temp_x_name_array[$K]=${nagios_array[$K]} done for K in "${!nagios_array_idx[@]}" do nagios_contact_temp_x_name_array_idx[$K]=${nagios_array_idx[$K]} done # for K in "${!nagios_contact_temp_x_name_array[@]}"; do echo $K --- ${nagios_contact_temp_x_name_array[$K]}; done # for K in "${!nagios_contact_temp_x_name_array_idx[@]}"; do echo $K --- ${nagios_contact_temp_x_name_array_idx[$K]}; done } declare -A nagios_host_templates_x_name_array declare -A nagios_host_templates_x_name_array_idx load_nagios_host_templates_x_name_array() { local K # clean nagios_host_templates_x_name_array for K in "${!nagios_host_templates_x_name_array[@]}"; do unset nagios_host_templates_x_name_array["$K"]}; done for K in "${!nagios_host_templates_x_name_array_idx[@]}"; do unset nagios_host_templates_x_name_array_idx["$K"]}; done # load values into nagios_array load_nagios_array 'NAGIOS_HOST_TEMPLATES_N' 'NAGIOS_HOST_TEMPLATES_#_NAME' [ ! "$?" = '0' ] && return 1 # copy values to nagios_host_templates_x_name_array for K in "${!nagios_array[@]}" do nagios_host_templates_x_name_array[$K]=${nagios_array[$K]} done for K in "${!nagios_array_idx[@]}" do nagios_host_templates_x_name_array_idx[$K]=${nagios_array_idx[$K]} done # for K in "${!nagios_host_templates_x_name_array[@]}"; do echo $K --- ${nagios_host_templates_x_name_array[$K]}; done # for K in "${!nagios_host_templates_x_name_array_idx[@]}"; do echo $K --- ${nagios_host_templates_x_name_array_idx[$K]}; done } declare -A nagios_service_templates_x_name_array declare -A nagios_service_templates_x_name_array_idx load_nagios_service_templates_x_name_array() { local K # clean nagios_service_templates_x_name_array for K in "${!nagios_service_templates_x_name_array[@]}"; do unset nagios_service_templates_x_name_array["$K"]}; done for K in "${!nagios_service_templates_x_name_array_idx[@]}"; do unset nagios_service_templates_x_name_array_idx["$K"]}; done # load values into nagios_array load_nagios_array 'NAGIOS_SERVICE_TEMPLATES_N' 'NAGIOS_SERVICE_TEMPLATES_#_NAME' [ ! "$?" = '0' ] && return 1 # copy values to nagios_service_templates_x_name_array for K in "${!nagios_array[@]}" do nagios_service_templates_x_name_array[$K]=${nagios_array[$K]} done for K in "${!nagios_array_idx[@]}" do nagios_service_templates_x_name_array_idx[$K]=${nagios_array_idx[$K]} done # for K in "${!nagios_service_templates_x_name_array[@]}"; do echo $K --- ${nagios_service_templates_x_name_array[$K]}; done # for K in "${!nagios_service_templates_x_name_array_idx[@]}"; do echo $K --- ${nagios_service_templates_x_name_array_idx[$K]}; done } declare -A nagios_eventhandler_x_name_array declare -A nagios_eventhandler_x_name_array_idx load_nagios_eventhandler_x_name_array() { local K # clean nagios_service_templates_x_name_array for K in "${!nagios_eventhandler_x_name_array[@]}"; do unset nagios_eventhandler_x_name_array["$K"]}; done for K in "${!nagios_eventhandler_x_name_array_idx[@]}"; do unset nagios_eventhandler_x_name_array_idx["$K"]}; done # load values into nagios_array load_nagios_array 'NAGIOS_EVENTHANDLER_N' 'NAGIOS_EVENTHANDLER_#_NAME' 'NAGIOS_EVENTHANDLER_#_ACTIVE' [ ! "$?" = '0' ] && return 1 # copy values to nagios_service_templates_x_name_array for K in "${!nagios_array[@]}" do nagios_eventhandler_x_name_array[$K]=${nagios_array[$K]} done for K in "${!nagios_array_idx[@]}" do nagios_eventhandler_x_name_array_idx[$K]=${nagios_array_idx[$K]} done # for K in "${!nagios_service_templates_x_name_array[@]}"; do echo $K --- ${nagios_service_templates_x_name_array[$K]}; done # for K in "${!nagios_service_templates_x_name_array_idx[@]}"; do echo $K --- ${nagios_service_templates_x_name_array_idx[$K]}; done } # $1 NAGIOS_HOSTGROUP_N # $2 NAGIOS_HOSTGROUP_#_MEMLIST_N # $3 NAGIOS_HOSTGROUP_#_MEMLIST_#_MEMBERS # $4 nagios_host_x_name_array check_x_y() { local _XCOUNT=$1 local _YCOUNT=$2 local _VAR=$3 local _ARRAY=$4 _RETURN=0 #TEST echo "_XCOUNT=$_XCOUNT" #TEST echo "_YCOUNT=$_YCOUNT" #TEST echo "_VAR =$_VAR" #TEST echo "_ARRAY =$_ARRAY" # get value of _XCOUNT eval _XC=\$$_XCOUNT #TEST echo "_XC=$_XC" if [ "$_XC" = '' ]; then mecho --error "error: wrong variable $_XCOUNT" _RETURN=1 else _IX=1 while [ "${_IX}" -le "${_XC}" ] do # get value of _YCOUNT _AYCOUNT=$(echo "$_YCOUNT" | sed "s|#|$_IX|") eval _YC=\$$_AYCOUNT #TEST echo "_YC=$_YC" _IY=1 while [ "${_IY}" -le "${_YC}" ] do # get value of _VAR _AVAR=$(echo "$_VAR" | sed "s|#|$_IX|" | sed "s|#|$_IY|") #TEST echo "_AVAR=$_AVAR" eval _AVALUE=\$$_AVAR #TEST echo "_AVALUE=$_AVALUE" # get array value ... if possible eval _CVAL=\${$_ARRAY[\$_AVALUE]} #TEST echo "_CVAL=$_CVAL" if [ "$_CVAL" = '' ] then mecho --error "error: $_AVAR '$_AVALUE' is invalid" _RETURN=1 fi let _IY=$_IY+1 done let _IX=$_IX+1 done fi return $_RETURN } # $1 NAGIOS_CONTACTS_N # $2 NAGIOS_CONTACTS_#_CONTACTGROUPS # $3 nagios_contacts_x_name_array check_x() { local _XCOUNT=$1 local _VAR=$2 local _ARRAY=$3 _RETURN=0 #TEST echo "_XCOUNT=$_XCOUNT" #TEST echo "_VAR =$_VAR" #TEST echo "_ARRAY =$_ARRAY" # get value of _XCOUNT eval _XC=\$$_XCOUNT #TEST echo "_XC=$_XC" if [ "$_XC" = '' ]; then mecho --error "error: wrong variable $_XCOUNT" _RETURN=1 else _IX=1 while [ "${_IX}" -le "${_XC}" ] do # get value of _VAR _AVAR=$(echo "$_VAR" | sed "s|#|$_IX|") #TEST echo "_AVAR=$_AVAR" eval _AVALUE=\$$_AVAR #TEST echo "_AVALUE=$_AVALUE" # don't try to check empty values if [ ! "$_AVALUE" = '' ] then # get array value ... if possible eval _CVAL=\${$_ARRAY[\$_AVALUE]} #echo "_CVAL=$_CVAL" if [ "$_CVAL" = '' ] then mecho --error "error: $_AVAR '$_AVALUE' is invalid" _RETURN=1 fi fi let _IX=$_IX+1 done fi return $_RETURN } fi