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. 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
    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. 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. 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
            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