diff --git a/check_remote_oracle b/check_remote_oracle index fae50b4..5119e65 100755 --- a/check_remote_oracle +++ b/check_remote_oracle @@ -25,11 +25,21 @@ REVISION="6.6.6" # colors -LIGHTGREEN="\033[1;32m" +BOLD="\e[1m" +GREEN="\e[32m" +LIGHTGREEN="${BOLD}${GREEN}" +RED="\033[1;31m" LIGHTRED="\033[1;31m" +BLUE="\e[34m" +LIGHTBLUE="${BOLD}${BLUE}" +YELLOW="\e[33m" +LIGHTYELLOW="${BOLD}${YELLOW}" WHITE="\033[0;37m" RESET="\033[0;00m" + +DEBUG=0 + NOHEAD="SET HEAD OFF SET PAGES 0 SET FEED OFF" @@ -64,6 +74,50 @@ print_revision() { printf "%sThe nagios plugins come with ABSOLUTELY NO WARRANTY. You may redistribute\ncopies of the plugins under the terms of the GNU General Public License.\nFor more information about these matters, see the file named COPYING.\n" | sed -e 's/\n/ /g' } +# H host +# U oracle user +# S sid +# W warning +# C critical +# t tns +# d db +# l login +# o ospassword +# s sessions +# c cache +# p parsing +# b tablespace +# u undo +# g diskgroup +# f FRA +# r redogen + +usage() +{ + echo -e "${LIGHTBLUE}USAGE${RESET} +# H host +# U oracle user +# S sid +# W warning +# C critical +# t tns +# d db +# l login +# o ospassword +# s sessions +# c cache +# p parsing +# b tablespace +# u undo +# g diskgroup +# f FRA +# r redogen + + +" + exit 0 +} + print_usage() { echo "Usage: @@ -152,24 +206,24 @@ print_help() " } -usage() -{ - # Information options - case "${1^^}" in - "--HELP"|"-H") - print_help - exit $STATE_OK - ;; - "--VERSION"|"-V") - print_revision $PROGNAME $REVISION - exit $STATE_OK - ;; - *) - print_usage - exit $STATE_OK - ;; - esac -} +## getops ### usage() +## getops ### { +## getops ### # Information options +## getops ### case "${1^^}" in +## getops ### "--HELP"|"-H") +## getops ### print_help +## getops ### exit $STATE_OK +## getops ### ;; +## getops ### "--VERSION"|"-V") +## getops ### print_revision $PROGNAME $REVISION +## getops ### exit $STATE_OK +## getops ### ;; +## getops ### *) +## getops ### print_usage +## getops ### exit $STATE_OK +## getops ### ;; +## getops ### esac +## getops ### } oraerror_check() @@ -1438,10 +1492,6 @@ check_userslocked() check_seqapply() { -# if [[ ! ${ORACLE_SID^^} = "BAVEL12SGDN" ]] ; then -# echo "CRITICAL - ${ORACLE_SID} Not avalaible for sequece apply check" -# return ${STATE_CRITICAL} -# fi if [[ "${ORACLE_SID}" =~ (.*)GDN$ ]] ; then local AUXSID=${BASH_REMATCH[1]} #echo ${AUXSID} @@ -1507,27 +1557,25 @@ ORDER BY 1; PROGNAME=$(basename $0) PROGPATH=$(dirname $0) - -[ $# -le 1 ] && usage $* - - -REMOTE_SERVER=$2 && shift 2 - -if [[ ! ${REMOTE_SERVER} ]] -then - echo "No remote server specified!!!" - exit ${STATE_UNKNOWN} -fi - -# Checking for non-standard user to connect -if [[ "${1}" = "-U" ]] -then - ORACLE_OSUSER=$2 && shift 2 -else - ORACLE_OSUSER="oracle" -fi - -SSH="ssh ${ORACLE_OSUSER}@${REMOTE_SERVER} -xq" +## getops ###[ $# -le 1 ] && usage $* +## getops ### +## getops ###REMOTE_SERVER=$2 && shift 2 +## getops ### +## getops ###if [[ ! ${REMOTE_SERVER} ]] +## getops ###then +## getops ### echo "No remote server specified!!!" +## getops ### exit ${STATE_UNKNOWN} +## getops ###fi +## getops ### +## getops #### Checking for non-standard user to connect +## getops ###if [[ "${1}" = "-U" ]] +## getops ###then +## getops ### ORACLE_OSUSER=$2 && shift 2 +## getops ###else +## getops ### ORACLE_OSUSER="oracle" +## getops ###fi +## getops ### +## getops ###SSH="ssh ${ORACLE_OSUSER}@${REMOTE_SERVER} -xq" ORACLEUSER="NAGIOS" ORACLEUSERPASSWORD="D2HSHBFMO5IINME9I9WT" @@ -1544,52 +1592,131 @@ ORACLEUSERPASSWORD="D2HSHBFMO5IINME9I9WT" # ######################################################################## -# CLEANING THE COMMAND -COMMAND="${1:2}" -ORACLE_SID="$2" -[[ ! "${COMMAND}" || ! "${ORACLE_SID}" ]] && print_usage && exit ${STATE_UNKNOWN} -if [ $# -eq 3 ] ; then - #ospassword check - # the values are REVERSE as it use reverse_return_values - CRITICAL=$2 - WARNING=$3 +# H host +# U oracle user +# S sid +# W warning +# C critical +# t tns +# d db +# l login +# o ospassword +# s sessions +# c cache +# p parsing +# b tablespace +# u undo +# g diskgroup +# f FRA +# r redogen - if [[ "${WARNING}" && ${CRITICAL} ]] ; then - if [[ ${CRITICAL} -gt ${WARNING} ]] ; then - echo "UNKNOWN - ${COMMAND} CRITICAL level is bigger than WARNING (reverse check)" - exit $STATE_UNKNOWN - fi - fi -else - if [ $# -eq 4 ] ; then - CRITICAL=$3 - WARNING=$4 - elif [ $# -eq 5 ] ; then - TSDG=$3 - CRITICAL=$4 - WARNING=$5 - fi - if [[ "${WARNING}" && ${CRITICAL} ]] ; then - if [[ ${WARNING} -gt ${CRITICAL} ]] ; then - echo "UNKNOWN - ${COMMAND} Warning level is less than Critical" - exit $STATE_UNKNOWN - fi - fi +while getopts "H:U:S:W:C:tdloscpbugfrhDF" arg; do + case $arg in + # H host + H) + REMOTE_SERVER=${OPTARG} + ;; + # U oracle user + U) + ORACLE_OSUSER="${OPTARG}" + ;; + # S sid + S) + ORACLE_SID="${OPTARG}" + ;; + # W warning + W) + WARNING="${OPTARG}" + ;; + # C critical + C) + CRITICAL="${OPTARG}" + ;; + # t tns + t) + COMMAND="tns" + ;; + # d db + d) + COMMAND="db" + ;; + # l login + l) + COMMAND="login" + ;; + # o ospassword + o) + COMMAND="ospassword" + ;; + # s sessions + s) + COMMAND="sessions" + ;; + # c cache + c) + COMMAND="cache" + ;; + # p parsing + p) + COMMAND="parsing" + ;; + # b tablespace + b) + COMMAND="tablespace" + ;; + # u undo + u) + COMMAND="undo" + ;; + # g diskgroup + g) + COMMAND="diskgroup" + ;; + # f FRA + f) + COMMAND="fra" + ;; + # r redogen + r) + COMMAND="redogen" + ;; + h) + usage + ;; + F) + MAYTHEFORCEBEWITHYOU=true + echo -e "${LIGHTBLUE}The force is strong in you?${RESET}" + ;; + D) + DEBUG=0 + ;; + *) + usage + ;; + esac +done +# mandatory ops +if [[ ! "${REMOTE_SERVER}" ]] ; then + usage +fi +if [[ ! "${ORACLE_OSUSER}" ]] ; then + usage +fi +if [[ ! "${ORACLE_SID}" ]] ; then + usage +fi +if [[ ! "${WARNING}" || ! "${CRITICAL}" ]] ; then + usage fi -# if the check is not for asmfs, then a ORACLE_HOME is necessary -if ! [[ "${COMMAND}" = "asmfs" || "${COMMAND}" = "ospassword" ]] ; then - get_remote_oraclehome - RES=$? - if [ ${RES} -ne ${STATE_OK} ] ; then - echo "CRITICAL - No ORACLE_HOME found" - exit $STATE_UNKNOWN - fi -# -fi + + +SSH="ssh ${ORACLE_OSUSER}@${REMOTE_SERVER} -xq" + +get_remote_oraclehome # SQLPLUS FOR CONNECTIONS SQLPLUS="sqlplus -s '${ORACLEUSER}/${ORACLEUSERPASSWORD}@${ORACLE_SID}'" @@ -1597,6 +1724,65 @@ ORAENV="ORACLE_HOME=${ORACLE_HOME};PATH=$PATH:$ORACLE_HOME/bin;LD_LIBRARY_PATH=$ +echo -e "${SSH}" +echo -e "${SQLPLUS}" +echo -e "${ORAENV}" +echo -e "${COMMAND}" +exit 0 + + +## getops ### # CLEANING THE COMMAND +## getops ### COMMAND="${1:2}" +## getops ### ORACLE_SID="$2" +## getops ### [[ ! "${COMMAND}" || ! "${ORACLE_SID}" ]] && print_usage && exit ${STATE_UNKNOWN} + + +## getops ### if [ $# -eq 3 ] ; then +## getops ### #ospassword check +## getops ### # the values are REVERSE as it use reverse_return_values +## getops ### CRITICAL=$2 +## getops ### WARNING=$3 +## getops ### +## getops ### if [[ "${WARNING}" && ${CRITICAL} ]] ; then +## getops ### if [[ ${CRITICAL} -gt ${WARNING} ]] ; then +## getops ### echo "UNKNOWN - ${COMMAND} CRITICAL level is bigger than WARNING (reverse check)" +## getops ### exit $STATE_UNKNOWN +## getops ### fi +## getops ### fi +## getops ### else +## getops ### if [ $# -eq 4 ] ; then +## getops ### CRITICAL=$3 +## getops ### WARNING=$4 +## getops ### elif [ $# -eq 5 ] ; then +## getops ### TSDG=$3 +## getops ### CRITICAL=$4 +## getops ### WARNING=$5 +## getops ### fi +## getops ### if [[ "${WARNING}" && ${CRITICAL} ]] ; then +## getops ### if [[ ${WARNING} -gt ${CRITICAL} ]] ; then +## getops ### echo "UNKNOWN - ${COMMAND} Warning level is less than Critical" +## getops ### exit $STATE_UNKNOWN +## getops ### fi +## getops ### fi +## getops ### +## getops ### fi + +## getops ### # if the check is not for asmfs, then a ORACLE_HOME is necessary +## getops ### if ! [[ "${COMMAND}" = "asmfs" || "${COMMAND}" = "ospassword" ]] ; then +## getops ### get_remote_oraclehome +## getops ### RES=$? +## getops ### if [ ${RES} -ne ${STATE_OK} ] ; then +## getops ### echo "CRITICAL - No ORACLE_HOME found" +## getops ### exit $STATE_UNKNOWN +## getops ### fi +## getops ### # +## getops ### fi + +## getops ### # SQLPLUS FOR CONNECTIONS +## getops ### SQLPLUS="sqlplus -s '${ORACLEUSER}/${ORACLEUSERPASSWORD}@${ORACLE_SID}'" +## getops ### ORAENV="ORACLE_HOME=${ORACLE_HOME};PATH=$PATH:$ORACLE_HOME/bin;LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib;export ORACLE_HOME PATH LD_LIBRARY_PATH;" + + case "${COMMAND}" in "tns") check_tns