Forum Programmation.shell avertir par email de la présence d'un type de fichier

Posté par  (site web personnel) .
Étiquettes : aucune
0
19
sept.
2006
Salute,
Voici ma situation
Des fichiers sont crées de façon aléatoire dans un spool.
Je voudrais savoir si un certain type de fichier est présent dans ce spool.
Ces fichiers ‘intéressants’, sont reconnaissables par les 3 premières lettres de leur nom 'type AR.'.
J’ai (grâce à linuxfr.org) fait un script qui renomme ces fichiers et qui me les envoi par ftp.
Mon problème est que je suis obligé de le connecter sur la machine pour savoir si il y a des AR. qui m’attendent.

Voici ce que je voudrais faire
J’aimerai être averti par email de la présence de tels fichiers.
Je pense qu’un script du genre :
"Si présence de fichier AR. alors mail moi" ne doit pas être trop compliqué à faire mais je n’ai aucune idée sur la façon de procéder … merci de votre aide
  • # genre ca ?

    Posté par  . Évalué à 4.

    A tester, ya surement des erreurs de syntaxe mais c'est pour donner l'idee :) Le timeout est en minute.



    #!/bin/sh

    TIMEOUT=5

    TSEC=$(( TIMEOUT * 60 ))

    while [ 1 ];
    do

    NEWFILE=`find . -name 'AR*' -mmin -${TIMEOUT}| wc -l`

    if [ "$NEWFILE" -gt "0" ]
    then
    #mail....
    fi

    sleep $TSEC

    done
    • [^] # Re: genre ca ?

      Posté par  . Évalué à 3.

      Pour des scripts qui doivent tourner en continue de façon périodique, il est préférable d'utiliser cron : si la machine reboute, ou si le script plante, il sera de toute façon relancé, et en plus les erreurs sont envoyés par email à l'interressé. Que demander de plus ?

      Donc en bref :

      un script ~/bin/check.sh :

      #!/bin/sh

      NEWFILE=`ls AR* | wc -l `

      if [ "$NEWFILE" -gt "0" ]
      then
      echo `ls -l AR* | mail -s "Y a des AR*" foo@bar.com
      fi


      En utilisant

      $ crontab -e

      ajouter un ligne :

      * * * * * /home/duduche/bin/check.sh


      Et voilà.

      <mode !pbpg>
      Ce qui est assez incroyable, c'est la facilité avec laquelle ce genre de chose est faisable sous Unix, alors que sous Windows je n'ose même pas y songer...
      • [^] # Re: genre ca ?

        Posté par  . Évalué à 1.

        ...alors que sous Windows je n'ose même pas y songer...
        ne soit pas mauvaise langue, tu aurais au moins pu faire le echo et le ls euh... pardon le dir... bon et pour le reste... bon ok, y'a une semaine de développement et 1000 euros de licenses :)) .
      • [^] # Plus simple ...

        Posté par  . Évalué à 0.

        #!/bin/sh

        [ -f AR* ] && ls -l AR* | mail -s "Y a des AR*" foo@bar.com
      • [^] # Plus simple (bis)

        Posté par  . Évalué à 0.

        crontab -e

        ajouter un ligne :

        * * * * * [ -f AR* ] && ls -l AR* | mail -s "Y a des AR*" foo@bar.com
        • [^] # Re: Plus simple (bis)

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

          Beaucoup plus simple en effet.

          J'ai une question connexe:
          Vu que ce script doit s'exécuter dans un répertoire bien particulier pour m'être utile, comment faire pour indiquer dans le cron que cela se passe dans /truc/machin/spool/ ?
          Une commande du genre cd /truc/machin/spool/ en début de la ligne marcherait ? ou bien suis-je dans l'obligation de faire un .sh ?
          • [^] # Re: Plus simple (bis)

            Posté par  . Évalué à 0.

            remplace le "AR*" par /truc/machin/spool/AR ca devrait fonctionner. Sinon cd /truc/machin/spool && [ -f AR* ] && ls -l AR* | mail -s "Y a des AR*" foo@bar.com
      • [^] # Re: genre ca ?

        Posté par  . Évalué à 2.

        Le but de la boucle était de ne pas renvoyer un mail toutes les 5 minutes, mais de vérifier seulement la présence de nouveaux fichiers :) (A faire aussi dans un cron, mais là c'etait du q&d)

Suivre le flux des commentaires

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