#!/bin/sh # # AUTEUR : Virtual Thom # VERSION : 1.0 # DATE : 20/05/2011 # # set -n # Decommenter pour debug syntax sans execution # NOTE: Ne pas oublier de recommenter ! # set -x # Decommenter pour debug # ########################################################## # SCRIPT ########################################################## usage(){ # exemple d'usage script=${0##*/} ; #script=${script%.*} ; echo "" ; echo "${script} - permet de recuperer des logs d'execution et de les mettre en forme" ; echo "" echo "Usage :" ; echo " ${script} machine environnement tempsenseconde" ; echo "1er parametre : nom de la machine" ; echo "2eme parametre : filtre pour la recuperation des logs, peut etre l'environnement par exemple" ; echo "3eme parametre : temps en secondes depuis l'execution du script jusqu'au temps de recuperation" ; echo "" ; exit 123 ; } if test "$1" = "--help" -o "$1" = "-help" -o "$1" = "-h" -o -z "$1" then usage fi machine=${1} #Par defaut machine environnement=${2:-PROD} #Par defaut PROD retour_tps=${3:-86400} #Par defaut 86400 s soit 24h LOGS_REP=${TOM_LOG_DIR:-/opt/vtom/logs/} LOGS_SCRIPTS=/opt/vtom/scripts/ INFILE=/opt/vtom/scripts/infile OUTFILE=/opt/vtom/scripts/outfile XML=/opt/vtom/scripts/${machine}_${environnement}.xml thisday=`date +%s` #date du jour en timestamp dayminusday=`expr $thisday - ${retour_tps}` #calcul date du jour - 24h (en s) en timestamp > $OUTFILE ls ${LOGS_REP} | grep "${environnement}.*\.o" | sort > $INFILE #liste des logs #chargement de l entete xml xsl entete="\n \n \n \n ]>\n \n \n \n \n \n \n \n \n \n Rapport log d execution job VTOM\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Aucun traitement \n \n \n \n \n \n \n \n
\n
\n \n \n
\n
\n
\n \n
\n
\n \n \n
\n
\n
\n
\n
\n \n \n \n \n \n \n \n
\n
\n \n
\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n \n \n \n \n \n \n
\n
\n \n
\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n \n
\n \n \n \n

Application :

\n

Traitement :

\n \n \n
\n " echo -e $entete > $XML echo "" >> $XML #arbre xslt : /stylesheet/data:data/row for LIGNE in $(cat $INFILE) do nom_exec=${LIGNE%.*} nom_traitement=${LIGNE%.*} #recuperation nom du fichier sans extension chaine la plus courte a droite du . suivi de n caracteres nom_traitement=`echo $nom_traitement | sed 's/_[0-9][0-9][0-9][0-9][0-9][0-9]-[0-9][0-9][0-9][0-9][0-9][0-9]$//'` #suppression de la date et heure exemple de sed date_exec=`echo $LIGNE | awk -F "_" '{print $NF}' | awk -F "." '{print $1}' | awk -F "-" '{print $1}'` #je laisse un exemple avec awk -F est le delemiter $NF le dernier argument heure_exec=${nom_exec##*-} #chaine la plus longue a gauche de - suivi de n caracteres heure_exec=`echo $heure_exec | sed 's/^[0-9][0-9]/&:/' | sed 's/[0-9][0-9]$/:&/'` #trick pour rajouter : entre heures et minutes avec sed date_traitement=`date --date="$date_exec $heure_exec" +"%d/%m/%y %H:%M:%S"` #interpretation de la date par --date et remise en format classique date_exec=`date --date="$date_exec $heure_exec" +%s` #timestamp pour tester avec le timestamp minimum requis if test "$date_exec" \> "$dayminusday" -a $LIGNE != "" then echo " " >> $XML echo " " >> $XML app=`head -n 20 "$LOGS_REP$LIGNE" | grep "Application" | awk -F ":" '{print $2}'` #head comme tail mais en partant du debut recuperation du nom application dans les logs echo " $app" >> $XML echo " " >> $XML echo " " >> $XML job=`head -n 20 "$LOGS_REP$LIGNE" | grep "Traitement" | awk -F ":" '{print $2}'` #recuperation du nom traitement dans les logs echo " $job" >> $XML echo " " >> $XML echo " " >> $XML num_exit=`tail -n 5 "$LOGS_REP$LIGNE" | grep "Exit" | awk -F "[" '{print $2}' | awk -F "]" '{print $1}'` #recuperation du numero exit dans les logs if test "${num_exit}" != "" then echo " $num_exit" >> $XML else echo " 321321" >> $XML fi echo " " >> $XML echo " " >> $XML #cat ${LOGS_REP}$LIGNE | sed 's#<#\<#g' | sed 's#>#\>#g' | sed 's#&#\&#g' >> $XML #sed remplace les < et les > par les notations xml pour ces caracteres speciaux cat ${LOGS_REP}$LIGNE | sed 's#&#\&#g' | sed 's#<#\<#g' | sed 's#>#\>#g' >> $XML echo " " >> $XML logko=`echo $LIGNE | sed 's/\.o$/\.e/'` #exemple de sed j aurai pu mettre ${nom_exec}.e echo " " >> $XML cat ${LOGS_REP}$logko | sed 's#&#\&#g' | sed 's#<#\<#g' | sed 's#>#\>#g' >> $XML echo " " >> $XML echo " " >> $XML fi done echo "" >> $XML echo "
" >> $XML #arbre xslt : /stylesheet/data:data/row rm -f $INFILE #nettoyage fichiers temp rm -f $OUTFILE