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
Partager