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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    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
    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
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 840
    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 840
    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
    Membre actif
    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
    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
    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

  5. #5
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 840
    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 840
    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
    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.

  7. #7
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 361
    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 361
    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

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