#!/usr/bin/ksh
#####################################################################
# TITRE:	NOra7342Proc
#--------------------------------------------------------------------
# CREE LE:	11/12/1998		Par: S. GISLAIN
#--------------------------------------------------------------------
# OBJET:	Montrer les process qui tournent et ne tournent pas
#		pour une instance specifiee.
#			
#====================================================================
# Modifie le:	JJ/MM/AA		Par: 
#	Motif: motif ayant justifie la modification et points
#	modifies si besoin
#####################################################################
# REMARQUES: Les entetes des fonctions ont ete allegees pour plus
#            de lisibilite (fonction de petite taille et presque
#            identiques
#
#####################################################################
# CONVENTION DES CODES DE RETOUR (autre aue 0 (Ok) et 1 (erreur)
#
#====================================================================
# ACCES ET DROITS D'APPEL
#	Mode: 0777	Owner: 			Group:
#====================================================================
# PRE-REQUIS EN ENTREE
# Environnement materiel:
#	Machine: 			Constructeur: HP,SUN,IBM 
# Environnement logiciel:
#	OS: hp-ux			Version: 9.05
#	    Solaris				 5.3
#	    SunOs 				 4.1.3
#	    AIX					 xxxxx 	
# Initialisation des variables gloables (environnement, reseau...):
#	VARIABLE1	=	
#	VARIABLE2	=
#####################################################################

#####################################################################
# INVENTAIRE DES APPELS EXTERNES
# Script(s) appelant(s) ce script: 
#	Operation Center
#--------------------------------------------------------------------
# Script(s) appele(s) par ce script:
#	Non Applicable	
#--------------------------------------------------------------------
# Fonction(s) appelee(s) par ce script:
# - Systeme:
#	Non Applicable	
# - Internes:
#	Non Applicable
#====================================================================
# Environnement et variables globales
# importes non modifies:
#	Non Applicable
#--------------------------------------------------------------------
# Importes modifies:
#	Non Applicable
#--------------------------------------------------------------------
# Exportes:
#	NOM_VARIABLE= Non Applicable
#####################################################################
# Fonctions internes au script
#	DeterminationOS 
#	FonctionHPUX
#	FonctionSunOS
#	FonctionSolaris
#	FonctionAIX
#####################################################################

# Definition des PATH :
fic_temp=/tmp/ps_OpC_ora
 
# Recuperation du nom de l'instance
typeset NomInstance=$1

# 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 CommandeLs			  # Commande ls en fonction de l'OS
typeset CommandePs			  # Commande ps en focntion de l'OS

#####################################################################
# 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)
		ReferenceFonction=FonctionHPUX
		CommandeLs="ls -g"
		CommandePs="ps -edf"
		;;
	
	SunOS)
		ReferenceFonction=FonctionSunOS
		CommandeLs="ls -l"
		CommandePs="ps -axlww"
		;;

	Solaris)
		ReferenceFonction=FonctionSolaris
		CommandeLs="ls -g"
		CommandePs="ps -edf"
		;;	

	AIX)
		ReferenceFonction=FonctionAIX
		CommandePs="ps -aef"
		;;

	*)	
		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
#####################################################################
# REMARQUES:	Le scrip affiche le nom de l'instance et verifie
#		si les 4 process associes tournent ou ne tournent pas
#		en verifiant leur presence dans le fichier temporaire
#		ps_tmp_OpC_Oracle.
#
#####################################################################
# CONVENTION DES CODES RETOUR (autres que 0 (Ok) et 2 (Erreur))
#
#====================================================================
# Fonctions DU SCRIPT appelees
#
#####################################################################


function FonctionHPUX
	{
	typeset _ProcessOra
	print Instance = $NomInstance

	ls /archive/oracle_${NomInstance} > /dev/null 2>&1
	if [ $? -eq 0 ]
	then
	  list="ora_lgwr_${NomInstance} ora_pmon_${NomInstance} ora_smon_${NomInstance} ora_dbwr_${NomInstance} ora_arch_${NomInstance}"
	else
	  list="ora_lgwr_${NomInstance} ora_pmon_${NomInstance} ora_smon_${NomInstance} ora_dbwr_${NomInstance}"
	fi

	for i in $list 
		do
		_ProcessOra=$(cat ${fic_temp} | grep $i)
		if [ "$_ProcessOra" != "" ]
			then print "$i actif"
		else
			print "$i non actif"
		fi
	done
	return 0
	}

function FonctionSunOS
	{
	typeset _ProcessOra
	print Instance = $NomInstance

	ls /archive/oracle_${NomInstance} > /dev/null 2>&1
	if [ $? -eq 0 ]
	then
	  list="ora_lgwr_${NomInstance} ora_pmon_${NomInstance} ora_smon_${NomInstance} ora_dbwr_${NomInstance} ora_arch_${NomInstance}"
	else
	  list="ora_lgwr_${NomInstance} ora_pmon_${NomInstance} ora_smon_${NomInstance} ora_dbwr_${NomInstance}"
	fi

	for i in $list
		do
		_ProcessOra=$(cat ${fic_temp} | grep $i)
		if [ "$_ProcessOra" != "" ]
			then print "$i actif"
		else
			print "$i non actif"
		fi
	done
	return 0
	}

function FonctionSolaris
	{
	typeset _ProcessOra
	print Instance = $NomInstance

	ls /archive/oracle_${NomInstance} > /dev/null 2>&1
	if [ $? -eq 0 ]
	then
	  list="ora_lgwr_${NomInstance} ora_pmon_${NomInstance} ora_smon_${NomInstance} ora_dbwr_${NomInstance} ora_arch_${NomInstance}"
	else
	  list="ora_lgwr_${NomInstance} ora_pmon_${NomInstance} ora_smon_${NomInstance} ora_dbwr_${NomInstance}"
	fi

	for i in $list
		do
		_ProcessOra=$(cat ${fic_temp} | grep $i)
		if [ "$_ProcessOra" != "" ]
			then print "$i actif"
		else
			print "$i non actif"
		fi
	done
	return 0
	}

function FonctionAIX
	{
	typeset _ProcessOra
	print Instance = $NomInstance

	ls /archive/oracle_${NomInstance} > /dev/null 2>&1
	if [ $? -eq 0 ]
	then
	  list="ora_lgwr_${NomInstance} ora_pmon_${NomInstance} ora_smon_${NomInstance} ora_dbwr_${NomInstance} ora_arch_${NomInstance}"
	else
	  list="ora_lgwr_${NomInstance} ora_pmon_${NomInstance} ora_smon_${NomInstance} ora_dbwr_${NomInstance}"
	fi

	for i in $list
		do
		_ProcessOra=$(cat ${fic_temp} | grep $i)
		if [ "$_ProcessOra" != "" ]
			then print "$i actif"
		else
			print "$i non actif"
		fi
	done
	return 0
	}


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

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

DeterminationOS
${CommandePs} > ${fic_temp}

${ReferenceFonction}

if [ $? -ne 0 ]
	then
	echo "Probleme sur le programme ORAShowProc." 1>&2
	exit 1
fi
	 
exit  0
