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 :

[Shell] Émission d'alerte si fichier non reçu


Sujet :

Shell et commandes GNU

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2017
    Messages : 3
    Points : 1
    Points
    1
    Par défaut [Shell] Émission d'alerte si fichier non reçu
    Bonjour à tous,

    Je vous contacte car j’ai un besoin d’alerting sur un fichier de log sur une machine UNIX
    Voici la structure du fichier de log, il est alimenté au fil de l’eau avec le nom du fichier et la date de reception.
    toto.log
    Nomfichier;datedereception
    Nomfichier;datedereception
    Nomfichier;datedereception
    Voici le besoin :

    Je suis censé recevoir de façon quotidienne un certain fichier à une heure précise
    Il faudrait que j’arrive à déclencher un mail si ce fichier n’est pas reçu depuis plus de 24h00.
    Je ne suis pas très à l’aise avec le scripting.

    • Quels conseils pouvez-vous m’apporter ?
    • Quelle méthode ?
    • Quelle structure de script?


    Un grand merci pour votre aide.
    Je reste bien entendu à votre disposition pour tout renseignement complémentaire
    Quentin

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

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

    Quels conseils pouvez-vous m’apporter ?
    lire les tutos qui figurent dans ma signature.
    et apprendre à exposer ton projet (en employant des termes le moins ambigu possible) : ce que tu as, ce que tu veux... noter chaque opération pour passer de l'un à l'autre, et adapter aux possibilités du langage utilisé.

    par exemple, là, on ne voit pas très bien le rapport entre le log et l'objectif.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Expert éminent Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 035
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 035
    Points : 8 400
    Points
    8 400
    Par défaut
    Citation Envoyé par N_BaH Voir le message
    on ne voit pas très bien le rapport entre le log et l'objectif.
    sauf erreur, si on prend la structure du fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Nomfichier;datedereception1
    Nomfichier;datedereception2
    le but est de s'assurer que datedereception2 - datedereception1 est inférieur à 24h, c'est bien ça ?

    est-ce qu'on pourrait avoir un exemple de 2/3 lignes du fichier en question ?

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2017
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Merci pour vos réponses.

    Désolé, je vais être plus précis

    Voici la structure du fichier de log

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    nomdefichier1;dateheurereceptionfichier1
    nomdefichier2;dateheurereceptionfichier2
    nomdefichier3;dateheurereceptionfichier3

    Il y a un fichier de log par jour (fichiersreçus_datedujour.log) qui contient tous les fichiers reçus du jour et leur date de réception


    Exemple de fichiers de log:

    fichiersreçus_16052017
    PRMCRCSP;20170516020000
    PRMCRCSC;20170516010000
    fichiersreçus_15052017
    PRMCRCSP;20170515010000
    PRMCRCSC;20170515020000
    le but est de s'assurer que datedereception2 - datedereception1 est inférieur à 24h, c'est bien ça ?
    ==> Non, l'objectif est de déclencher un mail lorsqu'un fichier n'a pas été reçu une fois dans les dernières 24h00

    Dans l'exemple ci dessus avec les 2 fichiers de log,

    fichier PRMCRCSP KO, il n'a pas été reçu une fois dans les dernières 24h00
    fichier PRMCRCSC OK, il a été reçu une fois dans les dernières 24h00


    J'espère avoir été un peu plus clair.

    Merci beaucoup

  5. #5
    Expert éminent Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 035
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 035
    Points : 8 400
    Points
    8 400
    Par défaut
    une solution via awk, en admettant qu'on fait tourner le script avec en paramètre le log du jour précédent suivi du log du jour courant:
    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
    $ awk -F';' '
    NR == FNR {
       tmp[$1] = $2
       received[$1]++
       next
    }
     
    {
       received[$1]++;
       tmp[$1] = $2 - t[$1]
    }
     
    END {
       for (i in received) {
          received[i]--
          if (!received[i]) {
             printf("fichier %s non reçu ce jour\n", i)
          } else {
             if (received[i] > 1) {
                printf ("fichier %s reçu plus d\x27une fois dans les dernières 24h\n", i)
             } else {
                if (tmp[i] >= 1000000) {
                   printf("fichier %s reçu il y a plus de 24h\n", i)
                }
             }
          }
       }
    }' "fichiersreçus_$(date -d yesterday +%d%m%Y)" "fichiersreçus_$(date +%d%m%Y)"
    fichier TOTO non reçu
    fichier PRMCRCSP reçu il y a plus de 24h
    fichier COINCOIN reçu plus d'une fois dans les dernières 24h
    • la clause NR == FNR ne traite que le premier fichier, le log d'hier donc, et prépare le terrain, l'instruction next empêche que l'autre log soit traité
    • la clause suivante ne traite que le log du jour courant, pareil pour chaque nom présent dans le fichier on incrémente une variable, si tout est OK elle devrait donc valoir 2 pour chaque nom de fichier
    • la clause END examine l'ensemble et affiche en conséquence, on commence par décrémenter la variable received, de sorte que 0=non reçu, 1=OK, 2=NOK car reçu plusieurs fois, si la variable est OK, alors on teste l'écart entre les deux dates de réception

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2017
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Bonjour @BufferBob,

    Un grand merci pour vos explications et réponses.

    Je vais donc partir de cette structure AWK.

    Excellente journée.

Discussions similaires

  1. Wget - télécharger des fichiers non-html
    Par narmataru dans le forum Réseau
    Réponses: 10
    Dernier message: 14/07/2018, 15h20
  2. Réponses: 16
    Dernier message: 28/11/2005, 19h09
  3. Création version client - fichiers non trouvés
    Par Pascal dans le forum WinDev
    Réponses: 7
    Dernier message: 03/12/2004, 11h34
  4. [Debutant][Install][VS]erreur sur fichier non trouvé.
    Par silvermoon dans le forum DirectX
    Réponses: 4
    Dernier message: 16/07/2004, 20h59
  5. Réponses: 7
    Dernier message: 21/05/2004, 17h13

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