Envoie de mail

Bonjour,

J'ai un répertoire que je synchronise tous les jours via rsync. Un mail est envoyé à chaque synchronisation. Je souhaiterais simplement limiter cet envoi, je m'explique: si il n'y a pas de nouveaux fichiers, je voudrais qu'aucun mail ne soit envoyé, et dans le cas contraire, un mail doit m'être adressé.

Merci
Configuration: Linux
Firefox 2.0.0.12

5 réponses

  1. Webmaster
    Bonjour,

    Comment est envoyé le mail actuellement ?

    Peux-tu nous mettre un bout de script qu'on puisse voir de quoi il retourne ?

    A plus
    0
    1. Voici mon script de mail

      #! /bin/bash
      set -x

      SERVER="192.168.22.5"
      PORT="25"

      function check_250()
      {
      while read
      do
      set -- ${REPLY//$'\r'/}
      [ "$1" = "250" ] && break
      done
      }

      #exec 3<> /usr/local/logs/smtp_errors.log 2>&3-

      if ! exec 3<> /dev/tcp/${SERVER}/${PORT}
      then
      echo "`basename $0` : connexion impossible au serveur ${SERVER}:${PORT}"
      exit 1
      fi

      trap "{ exec 1<&- 2<&- ; exit 255; }" EXIT
      exec 0<&3 1>&3-

      echo "EHLO `hostname`"
      check_250

      echo "MAIL FROM:<synchro@server>"
      check_250

      echo "RCPT TO:<mogruith@server>"
      check_250

      echo "DATA"
      echo "Subject: Syncronisation REP1 REP2 effectuee le $(date '+%d/%m/%Y a %X')"
      cat /var/log/synchro.log
      echo
      echo "."
      echo
      check_250

      echo "QUIT"

      exit 0

      Pour infos, il y a avant donc, un script faisant du rsync entre un serveur windows et un serveur linux. Il fonctionne tres bien.

      Merci
      0
      1. Webmaster
        Pour infos, il y a avant donc, un script faisant du rsync entre un serveur windows et un serveur linux. Il fonctionne tres bien.

        Ok, alors c'est au niveau de ce script qu'il faut agir, tu as un moyen de savoir en fin de traitement combien de fichiers on été synchronisés ? (via un timestamp ou autre ?)

        Sinon, il va falloir faire avant le rsync, une liste des fichiers, et une autre aprés, en cas de différence, appeler ton script qui envoie le mail...

        Enfin, c'est une solution parmis d'autres, tu as peut-être déjà dans ton script rsync, un indicateur qui te permetterais de décider simplement si oui ou non, tu doit envoyer le mail ;-)

        A plus
        0
        1. Je vais peut etre abuser .. Mais pourrais tu me dire comment je peux tester le nombre de fichier entre deux synchros et si il y en un en plus, appeler mon script de mail ?

          Merci
          0
          1. Contributeur
            si rsync ne produit aucun output, c'est qu'aucun fichier n'a été synchronisé, faire quelque chose comme:

            rsync > /tmp/file.out
            test -s /tmp/file.out && { mail -s rsync user@system < /tmp/file.out ; } # fichier non vide, envoyer un mail
            0