Bonjour,
Je suis un peu perdu, j'espère que vous pourrez m'aider à retrouver ma route.
Je commence le scripting depuis peu, mais déjà en urgence.

J'explique rapidement :
A ce jour, ma boîte lance des jobs OPCON (ordonnanceur) et appelle une ligne de commande et des paramètres, qui entre autre lance un script shell qui sert à exécuter des flux talend.
La gestion des logs est pour le moment brut, à savoir tout l'historique du lancement, traitement , est positionné dans un log.
La modification qui m'a été demandée de faire, est detraiter différemment les logs de sortie en fin de job. (fin d'exécution du script je suppose)
En fonction des alertes :
Je dois stocker la sortie de cette exécution dans un "nouveau fichier", et selon le résultat :

Soit il y a du "warning" dans le fichier de log temporaire, et là je dois rajouter ces lignes dans le fichier de log déjà eixstant ( à la suite de ce qu'il contient déjà)
Ou si pas d'alerte warning, mais juste de "l'info", je dois supprimer ce fichier temporaire.

J'ai en ma possession le script qui permet de lancer les flux talend (script shell) et également le paramètrage log4j.xml utilisé aussi.

Je vous mets le corps du script sh, si vous pouviez m'aiguiller au moins, sans forcément me dire exactement quoi faire, que je puisse au moins partir sur quelque chose, je n'ai jamais fais de script à ce jour ..

Merci :

PS : le script

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
#!/bin/bash -x 
 
SCHEDULE="$SMA_SCHEDULE_NAME"
JOBNAME="$SMA_user_SPECIFIED_JOBNAME"
# Determine la marque et le domaine d'apres le nom de la schedule (champs 3 et 4)
IFS=- read dummy dummy MARQUE DOMAINE dummy < <( echo "$SCHEDULE" )
#
# v2.5.0 : Détection du nom de l'executable
#
_SCRIPTNAME=$(basename $0 .sh)
 
user="$1" ; shift
talenddir="$1" ; shift
flux="$1" ; shift
vojdbc="${1}.jar" ; shift
 
_PLUS=""
 
if [ $_SCRIPTNAME == "LanceurTalendV2Vars" ]
then
   _PLUS="variante VARIABLES "
   sep="$1" ; shift
else
   if [ "${1:0:1}" != "-" ] && [ "${1:0:1}" != " " ] && [ "${1:0:1}" != "" ]
   then
      echo "**** ERREUR D'APPEL : verifiez la syntaxe !!!!!!"
      exit 100
   fi
fi
 
version="3.0.0"
 
_REP_OPCON=$(dirname $BASH_SOURCE[0])
 
echo "BERNIER "
echo "Lanceur Talend "$_PLUS"Version : "$version
echo "================================"
echo " Version spꤩfique U.R."
echo "================================"
 
verif_nom(){
  #
  # Verifie que le nom commence par le trigramme d'une société
  #
  _NOM=$1
  _SOCIETES="TDG_OTA_VAC_ITK_AXY_" # Mettre les trigrammes de socité et le _ les uns à la suite des autres "ABC_DEF_GHI_"
  #for i in {0..${#_SOCIETES}..4}
  lg=${#_SOCIETES}
  rtn=10
  for (( i=0; i<$lg; i=i+4 ))
  do
  if [ ${_SOCIETES:$i:4} == ${_NOM:0:4} ]
          then
                rtn=0
          fi
  done
  return $rtn
}
 
$_REP_OPCON/VerifCTX.sh /opt/app/ctx/Linux.General.cfg
 
if [ $? == 0 ] && [ "${flux:7:12}" != "_NUL_NUL_NUL" ]
	then
verif_nom $flux
			if [ $? == 0 ]
				then
			REP_LIV=${flux:0:7}
			chemin=$talenddir/$REP_LIV/$flux
#Verification de la presence du script {$flux}_run.sh
         if [ ! -f ${chemin}/${flux}_ojdbc_run.sh ]
				  then 
					  cp ${chemin}/${flux}_run.sh ${chemin}/${flux}_ojdbc_run.sh 
					  echo "copie du script run.sh en ojdbc_run.sh"
					  sed -i "s/ojdbc[0-9][0-9]*.jar/\$vojdbc/g" ${chemin}/${flux}_ojdbc_run.sh
					  echo "Remplacement de la valeur ojdbc dans le fichier copi顦lux_ojdbc_run_sh"
            chown $user ${chemin}/${flux}_ojdbc_run.sh
			   fi      
					if [ $_SCRIPTNAME == "LanceurTalendV2Vars" ]
						then
							cmd=$flux"_ojdbc_run.sh "${*//$sep/=}
						else
							cmd=$flux"_ojdbc_run.sh "$*
					fi
					echo "Lanceur: Marque: $MARQUE, Domaine: $DOMAINE"
					echo "Lanceur: User: $user"
					echo "Lanceur: Chemin: $chemin"
					echo "Lanceur: Cmd: $cmd"
 
					fragment="$( mktemp /tmp/tmp.LanceurTalend.XXXXXX )"
					chown "$user" "$fragment"
					cat >"$fragment" <<'EOF'
[ "$SHELL" = "/bin/bash" -a -e .bash_profile ] && . .bash_profile
[ -e .profile ] && . .profile
echo "ENV set to $ENV"
[ -n "$ENV" -a -e "$ENV" ] && . "$ENV"
umask 0007
EOF
	      		echo export vojdbc=$vojdbc >>"$fragment"
            echo "cd \"$chemin\" && /bin/bash $cmd | /usr/bin/awk -f $_REP_OPCON/log.awk" >>"$fragment"
            echo "RETURNCODE=\${PIPESTATUS[0]}" >>"$fragment"
            # echo "echo \$RETURNCODE" >>"$fragment"
            echo "exit \$RETURNCODE" >>"$fragment"
 
 
            cat "$fragment"
 
            usershell="$( getent passwd "$user" |cut -f7 -d: )"
            test -n "$usershell" # Dies if $user does not exist
            su - "$user" -c "$usershell $fragment"
 
            RETURNCODE=$?
            echo "Lanceur: Return code: $RETURNCODE"
 
            rm "$fragment"
        else
            echo "Nom du flux incorrect"
            RETURNCODE=254
        fi
else
    if [[ "${flux:7:12}" == "_NUL_NUL_NUL" ]]
    then
        echo "Flux NULL détecté : aucune action réalisée après vérification du fichier de contexte"
    fi
    RETURNCODE=$?
fi
exit $RETURNCODE