#!/usr/bin/ksh
# ESOTuxShow
#
# Affichage des serveurs Tuxedo manquants
#
# parametres
# $1 : nom du compte applicatif tuxedo
# $2 : nom de l'instance tuxedo
#

# Definition des variables globales locales script:

typeset Cmd_tr

function DeterminationOS
{
	typeset VersionOS                 # Recuperation de la version de l'OS 
	typeset TypeMachine               # Recuperation de l'OS  	

	TypeMachine=$(uname -s)
	VersionOS=$(uname -rv)

	case ${TypeMachine} in
	HP-UX)
		if [[ "$(echo $VersionOS|cut -d. -f2)" = "10" || "$(echo $VersionOS|cut -d. -f2)" = "11" ]] ; then
			Cmd_tr='tr -ds '
		else
			Cmd_tr='tr -d '
		fi
		;;
	SunOS)
		if [ "$(echo $VersionOS|cut -c1,2)" = "5." ] ; then
			Cmd_tr='tr -d '
		else	
			Cmd_tr='tr -d '
		fi
		;;
	AIX)
		if [ "$(echo $VersionOS|cut -c 3,3)" = "4" ] ; then
			Cmd_tr='tr -d '
		else
			Cmd_tr='tr -d '
		fi
		;;
	IRIX)
		;;

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

DeterminationOS

# on determine les numeros des serveurs Tuxedo a verifier.
# pour cela, on constitue un fichier contenant tout les paraemtres de la
# configuration.
# On en extrait les numeros SRVID des serveurs suivants :
# WSL , tous les serveurs applicatifs

su - $1 -c "tmunloadcf > /tmp/tuxlist$2" >/dev/null 2>&1
liste=`grep SRVID /tmp/tuxlist$2 | awk ' { print $3 } ' | cut -f2 -d"="`

# on ecrit les services dans le fichier /tmp/tux.inst
su - $1 -c "tmadmin -r > /tmp/tux.$2 2>&1 << !!
pclt
psr
q
!!
" >/dev/null 2>&1

if [ "`cat /tmp/tux.$2 | awk '{print $3}' | grep WSH`" = "" ]
then
  echo "----> WSH pas lance"
else 	
  echo "ok WSH"
fi

for n in 0 $liste
do
  #on teste si le numero de serveur $n est dans la liste des seveurs actifs

  serveur_present=0 #0=pas present
  #on determine le nom de chaque serveur
  case $n in 
  0 ) name=BBL;;
  * ) name=`grep "SRVID=$n$" /tmp/tuxlist$2 | awk '{print $1}'|${Cmd_tr} "\"" ""`;;
  esac

  for nn in `cat /tmp/tux.$2 | awk '{print $4}'`
  do
    if [ "$n" = "$nn" ]
      then
        serveur_present=1 
	echo "ok $name (SRVID=$n)"
      fi
  done 
  if [ $serveur_present -eq 0 ]
  then
    echo "----> $name pas lance (SRVID=$n)"
  fi
done

#TMS
# on determine si les TMS (connections XA) sont utilises
n=`grep -c TMSNAME /tmp/tuxlist$2`
if [ $n -ne  0 ]
then
	n_reel=`cat /tmp/tux.$2 | awk '{print $4}'|grep -c 30001`
	if [ $n_reel -eq $n ]
	then
		echo "ok : au moins 1 TMS demarre pour chaque groupe applicatif Tuxedo"
	else
		echo "----> les \"TMS\" ne sont pas demarres pour $n_reel groupe(s) applicatif(s) sur $n"
		echo "----> nom des serveurs TMS qui doivent etre demarres : `grep TMSNAME /tmp/tuxlist$2 | cut -d"=" -f2`"
	fi
fi
