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 qui vérifie si le fichier a été modifié


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 qui vérifie si le fichier a été modifié
    Bonjour,

    le voudrais faire un script shell qui vérifie si le fichier info.log a été modifié la dernière heure.

    -rwxr-xr-x 1 root root 0 Oct 27 16:36 info.log

    le fichier se trouve sur /tmp , je souhaite savoir si le fichier a été remplie "modifié" la dernière heure.

    algorithme : si le fichier a été modifié durant la dernière heure affichier OK sinon KO.

    Merci de vos aidées / pistes.

  2. #2
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 679
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 679
    Points : 30 966
    Points
    30 966
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par 20132014 Voir le message
    Merci de vos aidées / pistes.
    Bonjour
    Pistes
    1. wc -c /tmp/info.log pour avoir la taille, afin de regarder une possible évolution
    2. md5sum /tmp/info.log pour avoir sa signature, afin de regarder une possible évolution
    3. find /tmp -mindepth 1 -maxdepth 1 -name "info.log" -mmin -60 qui te donnera info.log si celui-ci a été modifié durant la dernière heure ou rien si ce n'est pas le cas


    Citation Envoyé par 20132014 Voir le message
    algorithme : si le fichier a été modifié durant la dernière heure affichier OK sinon KO.
    if/then/else...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  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'ai fait cela.

    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
     
    #!/bin/bash
    file=find /tmp -mindepth 1 -maxdepth 1 -name "info.log" -mmin -60
     
    if [ -e "$file" ] ; then
     
             echo "OK "
     
    else
     
            echo "Ko"
     
    fi
     
    exit 0
    mais ca ne marche pas , avez-vous des pistes d'améliorations.

    Merci

  4. #4
    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 882
    Points
    7 882
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #!/bin/bash
     
    file=$(find /tmp -mindepth 1 -maxdepth 1 -name "info.log" -mmin -60)
     
    if [ "$file" ] ; then
            echo "OK"
    else
            echo "KO"
    fi
    ɹǝsn *sıɹɐlos*

  5. #5
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 679
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 679
    Points : 30 966
    Points
    30 966
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par jlliagre Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if [ -n "$file" ] ; then
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  6. #6
    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 882
    Points
    7 882
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if [ -n "$file" ] ; then
    Si tu trouves que c'est plus lisible comme ça, pourquoi pas, mais techniquement, le "-n" ne sert à rien.
    ɹǝsn *sıɹɐlos*

  7. #7
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 273
    Points : 12 708
    Points
    12 708
    Par défaut
    Bonjour,
    Une autre méthode sous linux (et bash):

    Date en seconde depuis Epoch (01/01/1970):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ date '+%s'
    1414446664
    Date de modification en seconde depuis Epoch:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ stat -c '%Y' fichier 
    1411859209
    Donc, si la différence est inférieur à 3600, on affiche ok,exemples:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $ [[ -f fichier && $(($(date '+%s')-$(stat -c '%Y' fichier))) -lt 3600 ]] && echo ok
    $ touch fichier #on met les date de création/modification/accès à la date du moment (voir "man touch" pour toutes les options possibles)
    $ stat -c '%Y' fichier 
    1414447023
    $ [[ -f fichier && $(($(date '+%s')-$(stat -c '%Y' fichier))) -lt 3600 ]] && echo ok
    ok
    Cordialement.

  8. #8
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 679
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 679
    Points : 30 966
    Points
    30 966
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par jlliagre Voir le message
    Si tu trouves que c'est plus lisible comme ça, pourquoi pas, mais techniquement, le "-n" ne sert à rien.
    C'est l'option qui demande spécifiquement "vérifier que la chaine évaluée n'est pas vide". Peut-être que c'est l'option par défaut mais ça je n'en sais rien. En tout cas, le man dit qu'il faut le mettre et mis à part cette page à laquelle je n'ai rien compris (moi et l'anglais ça fait 25) je n'ai rien trouvé à ce sujet sur le net...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  9. #9
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 273
    Points : 12 708
    Points
    12 708
    Par défaut
    Un simple help test (sous bash):
    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
    test: test [expr]
        Evaluate conditional expression.
    
        Exits with a status of 0 (true) or 1 (false) depending on
        the evaluation of EXPR.  Expressions may be unary or binary.  Unary
        expressions are often used to examine the status of a file.  There
        are string operators as well, and numeric comparison operators.
    ...
    ...
        String operators:
    
          -z STRING      True if string is empty.
    
          -n STRING
             STRING      True if string is not empty.
    Cordialement.

  10. #10
    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 882
    Points
    7 882
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    C'est l'option qui demande spécifiquement "vérifier que la chaine évaluée n'est pas vide". Peut-être que c'est l'option par défaut mais ça je n'en sais rien. En tout cas, le man dit qu'il faut le mettre
    Heu, tu n'a pas bien regardé la page du manuel:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    man test
    ...
           -n STRING
                  the length of STRING is nonzero
     
           STRING equivalent to -n STRING
    La traduction en français sur http://man.developpez.com/man1/test/


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    -n CHAÎNE 
        la longueur de CHAÎNE est non nulle
    CHAÎNE 
        équivalent à -n CHAÎNE
    ɹǝsn *sıɹɐlos*

  11. #11
    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
    Pouvez-vous me dire si cela est correct :

    #!/bin/bash

    file=$(find /tmp -mindepth 1 -maxdepth 1 -name "info.log" -mmin -60)

    if [ -n "$file" ] ; then
    echo "OK"
    elseif
    [ ??]
    ?
    echo "KO"
    fi
    j'ai juste besoin de savoir le contraire [ -n "$file" ]

  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
    Savez-vous le contraire du
    if [ -n "$file" ]

  13. #13
    Expert éminent sénior
    Avatar de Escapetiger
    Homme Profil pro
    Administrateur système Unix - Linux
    Inscrit en
    Juillet 2012
    Messages
    1 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Administrateur système Unix - Linux

    Informations forums :
    Inscription : Juillet 2012
    Messages : 1 474
    Points : 11 041
    Points
    11 041
    Par défaut
    Citation Envoyé par jlliagre Voir le message
    La traduction en français sur http://man.developpez.com/man1/test/


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    -n CHAÎNE 
        la longueur de CHAÎNE est non nulle
    CHAÎNE 
        équivalent à -n CHAÎNE
    Citation Envoyé par 20132014 Voir le message
    Savez-vous le contraire du
    if [ -n "$file" ]

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    -z CHAÎNE
        la longueur de la CHAÎNE est nulle
    « Developpez.com est un groupe international de bénévoles dont la motivation est l'entraide au sens large » (incl. forums developpez.net)
    Club des professionnels en informatique

  14. #14
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 679
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 679
    Points : 30 966
    Points
    30 966
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par 20132014 Voir le message
    Pouvez-vous me dire si cela est correct :
    Code bah : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #!/bin/bash
     
    file=$(find /tmp -mindepth 1 -maxdepth 1 -name "info.log" -mmin -60)
     
    if [ -n "$file" ] ; then
    echo "OK"
    elseif
    [ ??]
    ?
    echo "KO"
    fi
    D'un point de vue syntaxe pure, c'est soit else if, soit elif ; le premier cas appelant un fi miroir et pas le second. Mais elseif ça n'existe pas.
    D'un point de vue logique, je ne vois pas pourquoi tester autre chose vu que le premier test t'a donné déjà les deux possibilités. Soit la chaine est remplie, soit elle ne l'est pas !!!

    Citation Envoyé par 20132014 Voir le message
    j'ai juste besoin de savoir le contraire [ -n "$file" ]
    On te l'a dit, c'est [ -z "$file" ]. Mais même si cette option n'avait pas existé, on peut toujours inverser un test en mettant un point d'exclamation devant son option => [ ! -n "$file" ]...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  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 882
    Points
    7 882
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    on peut toujours inverser un test en mettant un point d'exclamation devant son option => [ ! -n "$file" ]...
    et même => [ ! "$file" ] ...
    ɹǝsn *sıɹɐlos*

Discussions similaires

  1. [Batch] Script qui vérifie le lancement d'un programme .bat
    Par forcapedro10 dans le forum Scripts/Batch
    Réponses: 13
    Dernier message: 04/01/2015, 00h49
  2. [XL-2010] Créer une macro qui previent si le fichier a été modifié
    Par Philippe76 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 13/07/2011, 23h24
  3. [MySQL] script qui permettre à un utilisateur déjà enregistré de modifier son mot de passe
    Par forbidden_fruit dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 21/07/2008, 23h45
  4. script qui crée des fichiers
    Par Emcy dans le forum Langage
    Réponses: 5
    Dernier message: 30/10/2007, 09h28

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