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 :

Script de vérification pour la bonne réception d'un fichier


Sujet :

Shell et commandes GNU

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 40
    Points : 0
    Points
    0
    Par défaut Script de vérification pour la bonne réception d'un fichier
    Bonjour tout le monde.

    Je reçois un fichier chaque mois du coup je voudrai faire un script pour vérifier la bonne réception . *

    Le fichier s'appelle fichier_datemoisjour qui se trouve dans le fichier log : info.log

    Pouvez-vous m'aider à créer ce script.

    Est ce que juste avec un cat du fichier log ça ira ?

    Merci beaucoup d'avance.

  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,

    c'est pas clair. recommence.
    comment fais-tu à la main ?
    une ligne = une étape
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 40
    Points : 0
    Points
    0
    Par défaut
    j'avoue que je suis débutant dans le shell mais en gros

    je veux vérifier si j'ai bien reçu un fichier normalement je le reçois chaque mois.

    j'ai un fichier de log qui s'appel info.log

    # cat info.log

    fichier_20130908

    pouvez-vous svp me donner des pistes pour créer un script qui vérifie le bonne reception mensuelle de ce fichier

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 459
    Points
    13 459
    Par défaut
    Bonjour

    Personnellement, voici la méthode que j'utiliserais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $ find . -maxdepth 1 -iname "*$(date +%Y%m)*"
    ./Waaaaaa-20130908.mp3
    ./Waaaaaa-20130902.mp3
    Si la commande renvoie des fichiers, c'est qu'il a reçu.
    Sinon, c'est qu'il n'a pas reçu.

    Dans mon exemple, j'ai bien reçu deux fichiers ce mois-ci.

    Je n'utilise pas ton fichier de log.
    À toi d'adapter à tes besoins.


    PS: Cela dit, maintenant que tu as la piste pour fabriquer une date valide, tu peux filtrer ton fichier de log avec grep
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  5. #5
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695
    Points : 7 842
    Points
    7 842
    Par défaut
    Citation Envoyé par 20132014 Voir le message
    je veux vérifier si j'ai bien reçu un fichier normalement je le reçois chaque mois.
    Quel jour ? Comment ce fameux fichier est-il recu ? par mail, ftp, scp, ... ? Où se trouve-t-il ?
    j'ai un fichier de log qui s'appel info.log
    Où se trouve ce fichier de log ? Qui le crée ?
    # cat info.log

    fichier_20130908
    Le fichier de log s'appelle-t-il toujours "info.log" ? Est-ce que l'arrivée d'un nouveau fichier mensuel s'accompagne d'un nouveau fichier info.log ou une ligne est-elle ajoutée au fichier existant ?
    pouvez-vous svp me donner des pistes pour créer un script qui vérifie le bonne reception mensuelle de ce fichier
    Comment définir une "bonne réception" ? Un fichier reçu vide ou tronqué est-il acceptable ?
    ɹǝsn *sıɹɐlos*

  6. #6
    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
    oh la la ! tous ces détails, moi, je m'y perds

    je veux vérifier si j'ai bien reçu un fichier normalement je le reçois chaque mois.
    « vérifier si j'ai bien reçu un fichier »
    tu reçois ce fichier par quel moyen ?
    d'autres fichiers arrivent-ils par ce moyen ?
    «ce moyen» enregistre-t-il son activité ?
    le fichier est enregistré dans un répertoire connu ?
    quel rapport avec le fichier .log (hormis qu'il en contient le nom) ?
    le fichier .log contient-il d'autres informations ?

    « chaque mois »
    à une date fixe ?
    s'il n'est pas arrivé à cette date ?
    ...
    ?


    edit :
    ah !? grillé par jlliagre
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 40
    Points : 0
    Points
    0
    Par défaut
    Bonjour tout le monde,

    le fichier s'appelle : fichier20130909 qui se trouve dans le repertoire : /depot/fichiers

    Suite au lancement d'un script qui ce lance mensuelement et qui génére le fichier fichier20130909 date ( chaque premier du mois )

    l'issue de ce script la bonne reception se trace dans le fichier de log qui s'appelle info.log

    exemple de fichier de log :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    # cat info.log
    fichier20130701
    fichier20130801
    fichier20130901
    « vérifier si j'ai bien reçu un fichier »
    tu reçois ce fichier par quel moyen ?
    suite à un script qui génére ce fichier
    d'autres fichiers arrivent-ils par ce moyen ?
    non juste un seul fichier
    «ce moyen» enregistre-t-il son activité ?
    dans les logs , le fichier de log s'appelle info.log
    le fichier est enregistré dans un répertoire connu ?
    /depot/fichiers
    quel rapport avec le fichier .log (hormis qu'il en contient le nom) ?
    juste le nom de fichier et l'heure de génération
    le fichier .log contient-il d'autres informations ?
    non que e nom de fichier et l'heure de génération
    « chaque mois »
    à une date fixe ?
    le premier du mois
    s'il n'est pas arrivé à cette date ?
    généré un message d'erreur

  8. #8
    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
    la bonne reception se trace dans le fichier de log qui s'appelle info.log
    donc, le 2 du mois, tu peux lire la dernière ligne du fichier info.log, et alors
    soit le nom du fichier extrait contient la date de la veille, et c'est bon
    soit pas, et c'est pas bon !
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  9. #9
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695
    Points : 7 842
    Points
    7 842
    Par défaut
    Citation Envoyé par 20132014 Voir le message
    Bonjour tout le monde
    Bonjour Céline (drôle de prénom pour un homme... ).
    Suite au lancement d'un script qui ce lance mensuelement et qui génére le fichier fichier20130909 date ( chaque premier du mois )
    Pourquoi 20130909 si c'est le premier du mois ?
    l'issue de ce script la bonne reception se trace dans le fichier de log qui s'appelle info.log
    Donc, tu as déjà un script qui s'assure de la bonne réception du fichier. Pourquoi vouloir en écrire un autre ?
    exemple de fichier de log :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    # cat info.log
    fichier20130701
    fichier20130801
    fichier20130901
    « vérifier si j'ai bien reçu un fichier »
    tu reçois ce fichier par quel moyen ?
    suite à un script qui génére ce fichier
    Ou s'en doutait un peu, mais qu'est ce qui déclenche l'exécution de ce script là ?
    juste le nom de fichier et l'heure de génération
    Il n'y a pas d'heure dans l'exemple de fichier info.log que tu as donné.
    s'il n'est pas arrivé à cette date ?
    généré un message d'erreur
    Où se trouve le message d'erreur généré ? dans le fichier info.log ?
    ɹǝsn *sıɹɐlos*

  10. #10
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 40
    Points : 0
    Points
    0
    Par défaut
    Citation Envoyé par jlliagre Voir le message
    Bonjour Céline (drôle de prénom pour un homme... ).
    Pourquoi 20130909 si c'est le premier du mois ?Donc, tu as déjà un script qui s'assure de la bonne réception du fichier. Pourquoi vouloir en écrire un autre ?

    Ou s'en doutait un peu, mais qu'est ce qui déclenche l'exécution de ce script là ?
    Il n'y a pas d'heure dans l'exemple de fichier info.log que tu as donné.
    Où se trouve le message d'erreur généré ? dans le fichier info.log ?
    # cat info.log
    fichier20130701
    fichier20130801
    fichier20130901


    pouvez-vous svp à m'aider à écrire ce script :

    si le fichier info.log contient le fichier du premier de mois afficher ok sinon afficher erreur

  11. #11
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695
    Points : 7 842
    Points
    7 842
    Par défaut
    Merci de répondre aux question posées, sinon, il y a peu de chance d'avancer sur le sujet ...
    ɹǝsn *sıɹɐlos*

  12. #12
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 40
    Points : 0
    Points
    0
    Par défaut
    Pourquoi 20130909 si c'est le premier du mois ?

    c'était juste un exemple , normalement c'est le 01 de chaque mois
    l'issue de ce script la bonne reception se trace dans le fichier de log qui s'appelle info.log
    Donc, tu as déjà un script qui s'assure de la bonne réception du fichier. Pourquoi vouloir en écrire un autre ?

    pour ne pas vérifier a chaque fois , en plus ca sera pour un check nagios pour superviser la tache.
    # cat info.log
    fichier20130701
    fichier20130801
    fichier20130901
    « vérifier si j'ai bien reçu un fichier »
    tu reçois ce fichier par quel moyen ?

    suite à un script qui génére ce fichier
    Ou s'en doutait un peu, mais qu'est ce qui déclenche l'exécution de ce script là ?

    la crontab

    juste le nom de fichier et l'heure de génération
    Il n'y a pas d'heure dans l'exemple de fichier info.log que tu as donné.

    si il y a l'année le mois et je jour ainsi que l'heure et minute

    s'il n'est pas arrivé à cette date ?
    généré un message d'erreur
    Où se trouve le message d'erreur généré ? dans le fichier info.log ?

    dans le fichier info.log

    j'espére que j'était clair

  13. #13
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695
    Points : 7 842
    Points
    7 842
    Par défaut
    Tu as inversé les tags "citation" dans ta réponse, c'est un peu bizarre à lire.

    Comme l'une de tes réponses n'est toujours pas claire, peux-tu donner une exemple de fichier info.log qui corresponds à ce que tu décris ? C'est à dire où l'heure de réception est présente et aussi donner un exemple de message d'erreur que l'on est susceptible de trouver dans ce fichier info.log.
    ɹǝsn *sıɹɐlos*

  14. #14
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 40
    Points : 0
    Points
    0
    Par défaut
    Citation Envoyé par jlliagre Voir le message
    Tu as inversé les tags "citation" dans ta réponse, c'est un peu bizarre à lire.

    Comme l'une de tes réponses n'est toujours pas claire, peux-tu donner une exemple de fichier info.log qui corresponds à ce que tu décris ? C'est à dire où l'heure de réception est présente et aussi donner un exemple de message d'erreur que l'on est susceptible de trouver dans ce fichier info.log.
    re-bonjour jlliagre ,

    exemple de fichier info.log :

    20130801 130210 fichier20130801

    un exemple de message d'erreur :

    opération en erreur pouvez-vous ré-essayer

  15. #15
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695
    Points : 7 842
    Points
    7 842
    Par défaut
    Pas terrible comme message d'erreur ...
    ɹǝsn *sıɹɐlos*

  16. #16
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 40
    Points : 0
    Points
    0
    Par défaut
    Citation Envoyé par jlliagre Voir le message
    Pas terrible comme message d'erreur ...
    Pouvez-vous svp m'aider à créer ce script ou des pistes ?

  17. #17
    Expert éminent sénior 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 : 47
    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
    Points : 12 264
    Points
    12 264
    Par défaut
    probablement quelque chose du genre :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #!/bin/sh
    [ ! -f /chemin/fichier ] && ( echo "fichier absent "$(date +%Y%m%d) >> /var/log/valid.fichierpresent.log ; exit 1 )
    test=$(fuser -v /chemin/fichier) # voir si il y a un processus qui ecrit encore le fichier
    if [ test ...... ] ; then
       echo "le fichier est tjrs en cours de transfert "$(date +%Y%m%d) >> /var/log/valid.fichierpresent.log 
       exit 1
    fi
    echo fichier present...
    exit 0
    ça c'est l'algo minimal possible
    après faut broder autour et adapter à ton besoin.

    un fichier "arrivé" par définition doit être FINI d'arriver .... c'est donc indispensable de tester qu'il soit bien terminé d'arrivé.

    oublies pas que pour ton cas les informations comme le nom de fichier et la date à chercher sont à extraire de ton fichier info.log

  18. #18
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 40
    Points : 0
    Points
    0
    Par défaut
    Bonjour tout le monde,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    #!/bin/sh
    fichier=fichier$(date +%Y%m%d)
    log=info.log
    IF grep fichier log then echo " fichier est présent"
    elif then echo " fichier non présent"
    pour faire un script qui marche tout les jours , comment je peux faire un grep d'un fichier qui date d'un mois parce que on est le 11/09/2013 et je veux que mon script me dise toujours que le fichier de début de mois est présent. en l'occurence le script est fonctionnel pour un fichier qui date d'aujourd'hui et pas d'avant.

    Merci bcp pour vos aides
    Bonne jounée a tout le monde;

  19. #19
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695
    Points : 7 842
    Points
    7 842
    Par défaut
    Je ferais quelque chose comme ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if [ "$(tail -1 /depot/fichiers/info.log | awk '{print $3}' | sed 's/..$//')" = fichier$(date +%Y%m) ]; then
        echo "OK - $(tail -1 /depot/fichiers/info.log | awk '{printf "fichier reçu le %s à %s\n",$1,$2);}')"
    else
        echo "KO - $(tail -1 /depot/fichiers/info.log)"
        exit 1
    fi
    ɹǝsn *sıɹɐlos*

  20. #20
    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
    ah ben non alors, pas awk | sed

    et le tail dans une variable svp.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

Discussions similaires

  1. Vérification pour un quizz
    Par magic33 dans le forum Langage
    Réponses: 10
    Dernier message: 24/01/2007, 09h54
  2. petit scripte a faire pour un l'ecole
    Par sircam61 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 15/12/2005, 14h44
  3. modifier script sql oracle pour firebird
    Par bud1703 dans le forum SQL
    Réponses: 2
    Dernier message: 25/08/2005, 15h32
  4. script de vérification
    Par break_71 dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 08/06/2005, 17h24
  5. [VB6]Vérification pour un entier
    Par shinchan dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 20/01/2005, 15h28

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