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 POSIX Discussion :

[SCRIPT UNIX] : Boucler sur plusieurs erreurs dans un fichier


Sujet :

Shell et commandes POSIX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Technicien réseau
    Inscrit en
    Octobre 2014
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2014
    Messages : 108
    Par défaut [SCRIPT UNIX] : Boucler sur plusieurs erreurs dans un fichier
    Bonjour à tous et à toute,

    Mon script qui permet de rechercher le ou les erreur(s) dans une log.

    Je remonte tout ce qu'il y a au dessus et en dessous de l'erreur en utilisant -C 20.

    Mon script comme ceci fonctionne bien avec seulement une seule erreur dans la log.
    Mais lorsque la log comporte plusieurs erreurs, il me dis qu'il y a trop d'arguments...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    REPRACINE="/opt/ResUrgences/Logs"
    REPDEPOT="/home/interface/dvt/Structure"
    PRINTLOG="$REPDEPOT/ResEDI_2051-CronParametrage.log"
    SURVLOG="$REPDEPOT/SURVLOG"
    #---- Recherche de la balise ERROR, recherche des objets et interfaces en erreurs ------#
        if  $(grep "ERROR" $PRINTLOG | grep "objet(s) en erreur" | cut '-d#'  -f6 | cut '-d ' -f1) -ne "0" 
           then
    			echo "KO" > $SURVLOG
    			grep -C 20 "ERROR" $PRINTLOG >> $SURVLOG	 
        fi
    J'ai donc pensé a faire un boucle foreach/for, mais je n'arrive pas à utiliser correctement la boucle et je ne sais pas si c'est possible ...

    Merci d'avance,

    Cordialement,

    Cahuet

  2. #2
    Expert confirmé Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Par défaut
    parcourir un fichier se fait via

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    while read 
    do
    .......
    done < fichier
    $REPLY contient a chaque iteration la ligne uniqe de l iteration en cours

    tu peux ducoup l analyser et declancher ce que tu veux selon son contenu

  3. #3
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 283
    Par défaut
    Bonjour

    Mon script comme ceci fonctionne bien avec seulement une seule erreur dans la log.
    Ça m'étonnerait qu'il fonctionne bien puisque le "if" n'a pas de commande.
    Il faut écrire "if test" ou "if [ ... ]", les accolades étant un raccourci pour la commande test.

    Mais lorsque la log comporte plusieurs erreurs, il me dis qu'il y a trop d'arguments...
    Le "if" a trop d'arguments ... cf ci-dessus.

    Malgré la lecture de ton message, on ne comprend pas ton but. Tu lis un fichier log bien construit pour recréer un fichier pourri avec 20 lignes en dessus et 20 lignes en dessous de chaque erreur...
    Tu as des outils pour faire un travail plus sérieux.

  4. #4
    Membre confirmé
    Femme Profil pro
    Technicien réseau
    Inscrit en
    Octobre 2014
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2014
    Messages : 108
    Par défaut bonjour
    Ah pardon pour mon if il manque les [] je les ai oubliés en mettant le code dans la balise (faute de frappe)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    REPRACINE="/opt/ResUrgences/Logs"
    REPDEPOT="/home/interface/dvt/Structure"
    PRINTLOG="$REPDEPOT/ResEDI_2051-CronParametrage.log"
    SURVLOG="$REPDEPOT/SURVLOG"
    #---- Recherche de la balise ERROR, recherche des objets et interfaces en erreurs ------#
        if [ $(grep "ERROR" $PRINTLOG | grep "objet(s) en erreur" | cut '-d#'  -f6 | cut '-d ' -f1) -ne "0" ]
            then
    			echo "KO" > $SURVLOG
    			grep -C 20 "ERROR" $PRINTLOG >> $SURVLOG	 
        fi
    Et cela nous permet de nous remonter dans une log qu'il y a un problème.
    Car dans la log ou nous cherchons les erreurs elle peux atteindre les 880 000 lignes, autant dire c'est chercher une aiguille dans une botte de foin.
    C'est pour cela que j'essaye de mettre en place un script qui permet d'aller chercher les erreurs de la logs et les remonter dans une autre afin de facilité la lecture de la log ..

    C'est mon premier script, je suis débutante dans ce langage et je ne connait pas toute les solutions à ce sujet

  5. #5
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 283
    Par défaut
    Cette erreur a manifestement un début "ERROR". Quelle est la fin ?

    (Peut-on avoir un extrait du fichier ? Quitte à anonymiser des parties)

  6. #6
    Membre confirmé
    Femme Profil pro
    Technicien réseau
    Inscrit en
    Octobre 2014
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2014
    Messages : 108
    Par défaut
    voila un tout petit bout de la log :

    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
    8:00:11,161#DEBUG#[Cron-Parametrage]#f.i.x.m.eof.EnterpriseContextImpl#[EnterpriseContextImpl.java:104]#deletedObjects : 0
    2016-04-13 08:00:11,165#DEBUG#[Cron-Parametrage]#c.r.e.service.user.UserService#[UserService.java:69]#Utilisateur Edi trouvé : Serveur d'interfaces
    2016-04-13 08:00:11,168#DEBUG#[Cron-Parametrage]#c.r.utils.change.DbChangePublisher#[DbChangePublisher.java:57]#changes publication disabled
    2016-04-13 08:00:11,168#DEBUG#[Cron-Parametrage]#fr.improve.xdi.Analyser#[Analyser.java:284]#** fin des sauvegardes en base
    2016-04-13 08:00:11,168#INFO#[Cron-Parametrage]#fr.improve.xdi.Analyser#[Analyser.java:289]#Objet fr.improve.xdi.mapping.eof.EnterpriseObjectImpl@1040461b intégré.
    2016-04-13 08:00:11,168#INFO#[Cron-Parametrage]#fr.improve.xdi.Analyser#[Analyser.java:318]#Fin de l'intégration de l'objet Medecin.
    2016-04-13 08:00:11,168#DEBUG#[Cron-Parametrage]#f.i.x.m.eof.EnterpriseContextImpl#[EnterpriseContextImpl.java:201]#endTransaction (unlock)
    2016-04-13 08:00:11,168#DEBUG#[Cron-Parametrage]#fr.improve.xdi.Analyser#[Analyser.java:344]#** sauvegarde des données en base ...
    2016-04-13 08:00:11,168#DEBUG#[Cron-Parametrage]#f.i.x.m.eof.EnterpriseContextImpl#[EnterpriseContextImpl.java:206]#beginTransaction (lock)
    2016-04-13 08:00:11,168#DEBUG#[Cron-Parametrage]#f.i.x.m.eof.EnterpriseContextImpl#[EnterpriseContextImpl.java:102]#insertedObjects : 0
    2016-04-13 08:00:11,168#DEBUG#[Cron-Parametrage]#f.i.x.m.eof.EnterpriseContextImpl#[EnterpriseContextImpl.java:103]#updatedObjects : 0
    2016-04-13 08:00:11,169#DEBUG#[Cron-Parametrage]#f.i.x.m.eof.EnterpriseContextImpl#[EnterpriseContextImpl.java:104]#deletedObjects : 0
    2016-04-13 08:00:11,171#DEBUG#[Cron-Parametrage]#c.r.e.service.user.UserService#[UserService.java:69]#Utilisateur Edi trouvé : Serveur d'interfaces
    2016-04-13 08:00:11,171#DEBUG#[Cron-Parametrage]#fr.improve.xdi.Analyser#[Analyser.java:347]#** fin des sauvegardes en base
    2016-04-13 08:00:11,171#DEBUG#[Cron-Parametrage]#f.i.x.m.eof.EnterpriseContextImpl#[EnterpriseContextImpl.java:201]#endTransaction (unlock)
    2016-04-13 08:00:11,172#INFO#[Cron-Parametrage]#c.r.parameters.xdi.ParamProcess#[ParamProcess.java:111]#3 objet(s) traité(s)
    2016-04-13 08:00:11,172#ERROR#[Cron-Parametrage]#c.r.parameters.xdi.ParamProcess#[ParamProcess.java:112]#1 objet(s) en erreur
    2016-04-13 08:00:11,172#ERROR#[Cron-Parametrage]#c.r.parameters.xdi.ParamProcess#[ParamProcess.java:113]#0 erreur(s) de l'interface
    2016-04-13 08:00:11,172#INFO#[Cron-Parametrage]#c.r.parameters.xdi.ParamProcess#[ParamProcess.java:84]#Intégration de medecins terminée.
     
    2016-04-13 08:00:11,128#DEBUG#[Cron-Parametrage]#fr.improve.xdi.Analyser#[Analyser.java:251]#<?xml version="1.0" encoding="UTF-8"?><Medecin handler="com.resu.parameters.xdi.MedecinHandler">
      <nom>TOTO</nom>
      <prenom>TOTO</prenom>
      <rue>3 TOTO</rue>
      <lieudit>TATA</lieudit>
      <specialite>
        <SpecialiteMed action="search">
          <cat searchKey="true">73</cat>
        </SpecialiteMed>
      </specialite>
      <type>0002</type>
      <ville>
        <Commune handler="com.resu.xdi.Commune">
          <codePostal>00000</codePostal>
          <intitule case="upper">TATA CEDEX</intitule>
        </Commune>
      </ville>
      <matricule>00000</matricule>
      <service>
        <Service action="search">
          <codeUF>9989</codeUF>
          <serviceParent/>
        </Service>
      </service>
      <debutValide format="yyyyMMddHHmm">190001010000</debutValide>
      <finValide format="yyyyMMddHHmm">209912312359</finValide>
      <rpps>10002472008</rpps>
    </Medecin>

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

Discussions similaires

  1. [PPT-2007] Boucler sur une slide dans un diaporama de plusieurs slides
    Par lezoizo dans le forum Powerpoint
    Réponses: 4
    Dernier message: 13/09/2019, 15h01
  2. écrire sur plusieurs lignes dans un fichier
    Par kenny49 dans le forum Langage
    Réponses: 3
    Dernier message: 06/04/2007, 11h47
  3. [GD] Redimension d'image - plusieurs erreurs dans mon script
    Par Henry9 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 18/02/2007, 10h58
  4. Lister sur plusieurs colonnes dans état
    Par armagued dans le forum Access
    Réponses: 3
    Dernier message: 30/10/2005, 21h21
  5. Réponses: 2
    Dernier message: 21/09/2005, 12h18

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