############################################################## ### Pascalou45200@gmail.com ### ### V1.1 -> 01/11/2009 ### ###--------------------------------------------------------### ### LISTE DES PARAMETRES ### ### -u/-U user ### ### -p/-P Password ### ### -l/-L Listener ### ### -t/-T Nom du tablespace ### ###--------------------------------------------------------### ### -m/-M a vide (Optionel) ### ### -m pour checker tous les DBF du TBS en parametre ### ### -m Utilise la requete check_autoextend_multi.sql ### ### sinon Utilise la requete check_autoextend.sql ### ###--------------------------------------------------------### ############################################################## typeset -i NB_PARAM=$# LISTE_PARAM=$* User=""; MDP=""; Listener="" typeset -i WARNING=0 typeset -i CRITICAL=0 typeset -i TauxOccup=0 TBS="" typeset -i ResultatEntier=100 typeset -i ResultatDecimal=0 Message="" Rc=0 CheminSql=$(dirname $0) RequeteSql="check_autoextend.sql" FicResultat=$CheminSql/result.log Multi=0 NbreErreur=0 ## $ORACLE_HOME/bin/sqlplus $User/$MDP@$Listener @check_autoextend.sql $TBS ############################## ### Gestion des paramètres ### ############################## listeParam(){ #echo "LISTE_PARAM : $LISTE_PARAM" for i in $LISTE_PARAM do case "$i" in -C*|-c* ) CRITICAL=`echo $i | cut -c 3-` ;; -W*|-w* ) WARNING=`echo $i | cut -c 3-` ;; -U*|-u* ) User=`echo $i | cut -c 3-` ;; -L*|-l* ) Listener=`echo $i | cut -c 3-` ;; -P*|-p* ) MDP=`echo $i | cut -c 3-` ;; -T*|-t* ) TBS=`echo $i | cut -c 3-` ;; -M*|-m* ) RequeteSql="check_autoextend_multi.sql"; Multi=1 ;; -H*|-h* ) usage ;; esac done } ExecuteRequete(){ # echo "ORACLE_HOME : $ORACLE_HOME" # echo "User : $User" # echo "MDP : $MDP" # echo "Listener : $Listener" # echo "FicResultat : $FicResultat " # echo "TBS :$TBS" # read echo "$ORACLE_HOME/bin/sqlplus -s $User/$MDP@$Listener @$CheminSql/$RequeteSql $FicResultat $TBS" > $CheminSql/Commande.ksh chmod 777 $CheminSql/Commande.ksh $CheminSql/Commande.ksh if [ -f $CheminSql/Commande.ksh ] then rm -Rf $CheminSql/Commande.ksh fi } #### Lecture du resultat de la requete LitResultat (){ #ResultatEntier=$(sed -n '6p' $FicResultat | tr -s ' ' | cut -d"." -f1) #ResultatDecimal=$(sed -n '6p' $FicResultat | tr -s ' ' | cut -d"." -f2) Compteur=0 while read LigneTexte; do Caractere=$(echo $LigneTexte | cut -b 1) case $Caractere in / ) Compteur=`expr $Compteur + 1` CheminCompletFichier=$(echo $LigneTexte | tr -s " " | cut -d" " -f1) RepertoireFichier=$(dirname $CheminCompletFichier) NomFichierDBF=$(basename $CheminCompletFichier) Valeur=$(echo $LigneTexte | tr -s " " | cut -d" " -f2) typeset -i ValEntiere=$(echo $Valeur | cut -d"." -f1) typeset -i ValDecimale=$(echo $Valeur | cut -d"." -f2) Pourcentage=$ValEntiere","$ValDecimale"%" ############################################# #### Construction du message pour nagios #### ############################################# ################ ### Est ce OK ? ################ if [ $ValEntiere -lt $WARNING ] then Message='OK : Tous les DBF du tablespace '$TBS' sont OK' Rc=0 fi ##################### # Est ce un Warning ? ##################### if [ $ValEntiere -ge $WARNING ] then case $Multi in 1) if [[ $Rc -lt 2 && $Rc -ne 0 ]] then Temp=$Message Message=$(echo $Temp " Le DBF "$NomFichierDBF" est occupe a "$Pourcentage " ; ") Rc=1 fi if [ $Rc -eq 0 ] then Message="Warning : Le DBF "$NomFichierDBF" est occupe a "$Pourcentage " ; " Rc=1 fi ;; 0) Message='Warning : La taille des fichiers du TBS occupent '$Pourcentage' du TBS '$TBS Rc=1 ;; esac fi ###################### # est ce un critical ? ###################### if [ $ValEntiere -ge $CRITICAL ] then case $Multi in 1) Message='KO : Le DBF '$NomFichierDBF' est occupe a '$Pourcentage Rc=2 ;; 0) Message='KO : La taille des fichiers du TBS occupent '$Pourcentage' du TBS '$TBS Rc=2 ;; esac fi ;; * ) ;;## On ignore les autres lignes esac done < $FicResultat # est ce une erreur dans les seuils ? if [ $CRITICAL -lt $WARNING ] then Message='Unknown : Le Seuil Critique est inférieur au seuil Warning' Rc=3 fi # if [[ -f $CheminSql/result.log]] # rm $CheminSql/result.log # fi } listeParam ExecuteRequete LitResultat echo $Message exit $Rc