##############################################################
### 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