IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Gestion des logs en sortie de traitement (lancement de flux talend via un script SH)


Sujet :

Shell et commandes GNU

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Avril 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2017
    Messages : 9
    Points : 5
    Points
    5
    Par défaut Gestion des logs en sortie de traitement (lancement de flux talend via un script SH)
    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

  2. #2
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 392
    Points
    19 392
    Par défaut
    Bonjour,

    comment distinguer les alertes des infos ?
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Avril 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2017
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par N_BaH Voir le message
    Bonjour,

    comment distinguer les alertes des infos ?
    Bonjour,
    Si j'ai bien compris la demande qui m'a été faite, il faut rechercher les "WARNING" dans le log de sortie du traitement du flux talend, ou "INFO".
    Pour ajouter des informations à ma demande, il faut savoir qu'il est utilisé un fichier de pramètrage log4j.xml, dans lequel on choisit le niveau de log, warn pour un max d'informations, ou info, juste pour le minimum.
    Fichier que je viens d'apposer en pièce jointe.

    Merci de l'intérêt porté à ma demande,log4j.xml

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Avril 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2017
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Dans l'idée que je m'en suis faite, je voudrais utiliser un 'awk' puis un if pour chercher une chaîne de caractère.
    Selon le résultat, soit je trouve du warning, et je copie le log temporaire dans un fichier de log définitif.
    Soit je trouve juste "info" et donc je supprimer ce fichier temporaire, et ne modifie pas le fichier de log généré habituellement par l'exécution du flux.

  5. #5
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 392
    Points
    19 392
    Par défaut
    soit, mais il nous faut le log, puisque c'est lui qu'il faut traiter (probablement avec sed).
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Quel SGBD a une bonne gestion des LOGs ?
    Par joker vb dans le forum Décisions SGBD
    Réponses: 12
    Dernier message: 03/04/2008, 17h17
  2. [Source][Ocx]composant gestion des logs
    Par Delbeke dans le forum Vos contributions VB6
    Réponses: 4
    Dernier message: 23/12/2007, 16h42
  3. Gestion des erreurs entre sorties sans la STL
    Par Djobird dans le forum SL & STL
    Réponses: 2
    Dernier message: 13/02/2007, 21h22
  4. gestion des entrées et sortie en java
    Par lecyberax dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 14/05/2006, 22h51
  5. Gestion des .log sous Oracle
    Par SANOORA dans le forum Administration
    Réponses: 10
    Dernier message: 08/11/2004, 09h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo