Forum Programmation.shell Script analyse de dossiers

Posté par  . Licence CC By‑SA.
Étiquettes : aucune
0
7
août
2018

Hello tout le monde,

Je suis un petit nouveau sur le forum et je sollicite vos lumières pour la création d'un script qui pourrait analyser tout les dossiers présent dans /var/etc/www/html/
Il s'agit en fait du dossiers qui contient les dossiers utilisateurs de mon FTP (plus de 800).
Le but de ce script serait donc d'analyser tout les dossiers, pour vérifier qu'un fichier a bien été déposé, si ce n'est pas le cas, il faudrait qu'au bout de deux jours, j'ai une remonté par mail avec les dossiers en question qui n'aurait pas reçu de fichier. Mais ce n'est pas tout, il faudrait également ignoré les dossiers vide pour éviter des faux positifs de mon côté!
En effet un dossiers vide peut correspondre à un utilisateurs supprimé.
Quelqu'un aurait-il une piste?

Merci d'avance! :)

  • # découpe le problème

    Posté par  . Évalué à 2.

    A ta place je découperais le problème en plusieurs sous problème :

    • Une fonction/commande pour vérifier que le fichier a été déposé (man find)
    • Une fonction/commande qui check la date à laquelle ton fichier aurait été déposé
    • Une fonction/commande pour vérifier si ton dossier est vide
    • Une fonction/commande qui envoie un mail

    Attention par contre au doublon :
    Si tu dépose un fichier sample dans l'arborescence et qu'il existe déjà dans l'arborescence : si il est mal déposé tu peux avoir un faux négatif

    • [^] # Re: découpe le problème

      Posté par  . Évalué à 3.

      J'ajouterais une fonction pour s'assurer que le compte propriétaire du dossier existe encore ou est toujours actif avant d'envoyer le mail

  • # incron

    Posté par  (site web personnel) . Évalué à 4.

    Pour vérifier qu'un fichier est arrivée, plutôt que de faire des find réguliers, tu peux utiliser incron.
    C est un processus qui scrute les inodes sur systèmes de fichiers et qui fait des actions en fonction de ce que tu lui as paramétré

    • [^] # Re: incron

      Posté par  . Évalué à 1.

      J'avais envisager incron mais le problème est qu'il ne sait pas gérer les dossiers de manière récursive :/

      • [^] # Re: incron

        Posté par  . Évalué à 3. Dernière modification le 07 août 2018 à 17:02.

        Watcher, a Recursive incron Alternative :)

        je ne l'ai pas essayé mais ça semble prometteur d'après la plaquette commercial

        https://www.splitbrain.org/blog/2011-01/07-watcher_a_recursive_incron_alternative

        avis d'utilisateur vérifié :D :

        Nice work! Clean, simple, small amount of code, and it works just fine for me

        lire les commentaires semble aussi instructif, je recommande chaudement

  • # Eviter le problème des faux positifs ...

    Posté par  . Évalué à 3. Dernière modification le 07 août 2018 à 13:59.

    En cas de suppression d'un utilisateur, pourquoi ne pas supprimer son dossier, ou le déplacer ailleurs si tu veux archiver le contenu de celui-ci ?

    Encore mieux, lorsque tu as un dossier vide, s'assurer que le compte propriétaire du dossier n'a pas été supprimé ou désactivé avant d'envoyer l'alerte ?

    Et pour les utilisateurs, sont-ils créés en ocal ou centraliusés dans un annuaire style LDAP ?

  • # Pour ceux que ca pourrait interesser :)

    Posté par  . Évalué à 1.

    !/bin/bash

    echo -e "----------------------------------------------------------
    Programme de surveillance des fichiers
    ---------------------------------------------------------- "

    Subject="Rapport de surveillance des fichiers"

    echo "Bonjour," > votrefichierdest.txt
    echo " " >> votrefichierdest.txt
    echo "Vous trouverez ci-dessous la liste des fournisseurs n'ayant pas déposé de fichiers depuis deux jours:" >> votrefichierdest.txt
    echo " " >> votrefichierdest.txt
    echo "/!\ Ne répondez pas directement à cet e-mail, envoyer nous un mail à infra@mister-auto.com /!\ " >> votrefichierdest.txt
    echo " " >> votrefichierdest.txt
    find /var/www/html/ -name -ls -o -mtime +2 | tr '/' ' ' | awk '{print $4}' | sort | uniq >> votrefichierdest.txt

    mail -s "$Subject" -r "XXX" "XXX@XXX.com" < votrefichierdest.txt

    Bon ok c'est un peu du bidouillage mais ça à le mérite de faire le job :)

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.