#!/bin/ksh
#####################################################################
# TITRE:	ESODiskDocP
#--------------------------------------------------------------------
# CREE LE:	28/10/96		Par: DS/ESO
#--------------------------------------------------------------------
# OBJET:	Script verifiant la taille des disques 
#			
#====================================================================
# Modifie le:	JJ/MM/AA		Par: 
#	Motif: motif ayant justifie la modification et points
#	modifies si besoin
#####################################################################

# Recuperation du nom de la template associee
typeset NomTemplate=$1

# Recuperation du % limite a partir duquel en renvoie un message d'alert
typeset Pourcentage=$2

# Varaible de retour pour OPC TailleDisk: Taille d'un FS > a 90%
typeset TailleDisk=0

# Definition des variables globales locales script:
typeset TypeMachine=$(uname -s) 	  # Recuperation de l'OS  	
typeset VersionOS=$(uname -r | cut -c1,2) # Recuperation de la version de l'OS 
typeset ReferenceFonction		  # Commande differente suivant l'OS
typeset OPCMON				  # PATH de la commande opcmon

#####################################################################
# FONCTION: 	DeterminationOS	
# CREEE LE:	12/12/94		Par: Johann CURE HP
# OBJET:	Cette fonction permet de connaitre l'OS sur lequel
#		le script se deroule
#====================================================================
# Modifiee le:	JJ/MM/AA		Par: 
#	Motif: motif ayant justifie la modification et points
#	modifies si besoin
#####################################################################
# REMARQUES:
# 
#####################################################################
# CONVENTION DES CODES RETOUR (autres que 0 (Ok) et 2 (Erreur))
#
#====================================================================
# Fonctions DU SCRIPT appelees
#
#####################################################################
function DeterminationOS
{
	case ${TypeMachine} in
	HP-UX)
		OPCMON=/usr/OV/bin/OpC/opcmon
		ReferenceFonction=FonctionHPUX
		;;
	
	SunOS)
		OPCMON=/usr/OV/bin/OpC/opcmon
		ReferenceFonction=FonctionSunOS
		;;

	Solaris)
		OPCMON=/opt/OV/bin/OpC/opcmon
		ReferenceFonction=FonctionSolaris
		;;	

	AIX)
		OPCMON=/usr/lpp/OV/OpC/opcmon
		ReferenceFonction=FonctionAIX
		;;

	*)	
		print "${TypeMachine} non supporte par ce programme"
		exit 2
		;;
	esac
	return 0
}

#####################################################################
# FONCTION:     FonctionHP-UX
#		FonctionSunOS 
#		FonctionSolaris
#		FonctionAIX
# CREEE LE:     12/12/94                Par: Johann CURE HP
# OBJET:        Ces 4 fonctions execute les instructions propres a
#		chaque systeme pour obtenir les memes resultats 
#====================================================================
# Modifiee le:  JJ/MM/AA                Par:
#       Motif: motif ayant justifie la modification et points
#       modifies si besoin
#		28/10/96		DS/ESO
#		on elimine les fs commencant par /home en plus des 
#		fs habituels.
#####################################################################
# REMARQUES:	Je determine pour le systeme selctionne s'il existe
#		un files system qui depasse en % la valeur passee
#		en argument (a priori 90%).
#		Je retire tous les files systems correspondant au cdrom
#               (par convention le mot cdrom apparait) ainsi que tous
#               les files systems comprenant le mot data (corespondant)
#               aux bases de donnees.
#		Ne sont pas pris en compte les FS dont la capacite
#               est inferieure a 10% (par principe la valeur passee
#               en argument est superieure a 10%). En revanche je priend
#               FS superieur a 100% en testant la longueur du champ
#               (4 caracteres en comptant le caractere %) car awk
#               effectue une comparaison caratere par caratere ainsi
#               105% est plus peti que 20%
#		Si aucun FS ne depasse la valeur prescrite je renvoie
#		le valeur 0 qui ne declenche pas d'alarme.
#
#####################################################################
# CONVENTION DES CODES RETOUR (autres que 0 (Ok) et 2 (Erreur))
#
#====================================================================
# Fonctions DU SCRIPT appelees
#
#####################################################################

function FonctionHPUX
	{
	TailleDisk=$(bdf | awk -v pourcent=$Pourcentage '
		! /cdrom|\/data*|Filesystem|\/home/ && length($5) >= 3 \
		&& ( $5 >= pourcent || length($5) == 4 ) {  print $5 } ')
	TailleDisk=$(print $TailleDisk | cut -d'%' -f1)
	if [ "$TailleDisk" = "" ]
		then TailleDisk=0
	fi
	return 0
	}

function FonctionSunOS
	{
	TailleDisk=$(df | awk '
		! /cdrom|\/data*|Filesystem|\/home/  && length($5) >= 3 \
		&& ( $5 >= pourcent || length($5) == 4 ) { print $5 } '  pourcent=$Pourcentage )
	TailleDisk=$(print $TailleDisk | cut -d'%' -f1)
	if [ "$TailleDisk" = "" ]
		then TailleDisk=0
	fi
	return 0
	}

function FonctionSolaris
	{
	TailleDisk=$(df -k | nawk -v pourcent=$Pourcentage '
		! /cdrom|\/data*|Filesystem|\/home/ && length($5) >= 3 \
		&& ( $5 >= pourcent || length($5) == 4 )  {  print $5 }' )
	TailleDisk=$(print $TailleDisk | cut -d'%' -f1)
	if [ "$TailleDisk" = "" ]
		then TailleDisk=0
	fi
	return 0
	}

function FonctionAIX
	{
	TailleDisk=$(df | awk -v pourcent=$Pourcentage '
		! /cdrom|\/data*|Filesystem|\/home/ && length($4) >= 3 \
		&& ( $4>= pourcent || length($4) == 4 ) { print $4 }')
	TailleDisk=$(print $TailleDisk | cut -d'%' -f1)
	if [ "$TailleDisk" = "" ]
		then TailleDisk=0
	fi
	return 0
	}


####################################################################
#			PROGRAMME PRINCIPAL
####################################################################

if [ "$TypeMachine" = "SunOS" ] && [ "$VersionOS" = "5." ]
	then TypeMachine="Solaris"
fi

DeterminationOS

${ReferenceFonction}

${OPCMON}  "${NomTemplate}=${TailleDisk}"
if [ $? -ne 0 ]
	then
	echo "Probleme sur le programme SystValDisk." 1>&2
	exit 1
fi

exit 0
