Forum Programmation.shell obtenir une alerte dans l'environnement graphique

Posté par  (site web personnel) .
Étiquettes : aucune
0
9
mar.
2006
Bonjour,

J'ai un petit script de sauvegarde lancé par cron qui est de la forme suivante :


#!/bin/sh
{
echo sauvegarde 1
rsync ...
echo sauvegarde 2
rsync ...
} VV~/var/log/sauve.log 2VV~/var/log/sauve2.log


Comment faire pour que lorsqu'il y à un problème (quand on écrit dans sauce2.log), le script m'avertisse dans mon environnement graphique ?

Merci d'avance

Rem, j'ai utilisé le symbole V à la place du symbole "supérieur" que je n'arrive pas à obtenir dans linuxfr
  • # xdialog ?

    Posté par  . Évalué à 3.

    A la limite, tu peux faire un test sur la présence ou non de /var/log/sauve2.log à la fin de ton script, et faire un appel à xdialog (ou kdialog si tu es sous kde) pour afficher un message d'avertissement....
    • [^] # Re: xdialog ?

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

      oui mais non parce que d'une fois sur l'autre, sauve2.log peut continuer à exister (si l'avant dernière sauvegarde s'est mal passé par exemple)
      • [^] # Re: xdialog ?

        Posté par  . Évalué à 3.

        Ben au lieu d'en tester l'existence, tu testes la date de modification, ou bien tu l'éclates avant de faire ta sauvegarde, ou....
        Enfin, ce ne sont pas les solutions qui manquent !
        • [^] # Re: xdialog ?

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

          > tu testes la date de modification

          C'est surement une bonne idée. Par contre, je sais pas faire. Un petit coup de main ?
          • [^] # Re: xdialog ?

            Posté par  . Évalué à 5.

            Hello !
            Ben oui, je veux bien te donner un coup de main....
            Alors, si tu fais un
            $ ls -l --full-time /var/log/sauve2.log | cut -f 7 -d ' '

            Tu récupères la date de modification du
            fichier /var/log/sauve2.log

            Si tu fais :
            $ date +%Y-%m-%d
            Tu récupères la date du jour, formatée exactement comme la date récupérée lors du ls.

            Il ne reste plus qu'à comparer les deux :
            if [ $(ls -l --full-time /var/log/sauve2.log | cut -f 7 -d ' ') != $(date +%Y-%m-%d) ]
            then
            echo "Les dates diffèrent"
            else
            echo "Les dates sont identiques"
            fi

            Evidement, tu remplaceras les echo par ce dont tu as besoin pour afficher ta boîte de message.

            Bon courage pour la suite.
            • [^] # Re: xdialog ?

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

              En voila une solution qu'elle est bonne. Merci.
            • [^] # Re: xdialog ?

              Posté par  . Évalué à 3.

              une autre méthode avec stat (pour remplacer les ls | cut ):

              if [ $( stat -c '%Y' /var/log/sauve2.log ) -ne $(date '+%s' ) ]
              then
               echo "les dates diffèrent"
              else
               echo "les dates sont identiques"
              fi
              • [^] # Re: xdialog ?

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

                J'ajoute ce commentaire pour mémoire, si ça peut servir à quelqu'un.

                En fait, la solution indiquée plus haut ne marche pas parce que la redirection de la sortie 2 accède dans tous les cas au fichier et change la date au début de la sauvegarde. Le test est donc toujours positif ! J'ai décidé de tester la taille du fichier au début et à la fin de la sauvegarde :

                #!/bin/sh

                # test de la présence du répertoire de sauvegarde
                if [ ! -d '/mnt/serveur/sauvegardes/' ]
                then
                kdialog --title "Script de sauvegarde" --error "Répertoire de sauvegarde inaccessible"
                exit 1
                fi

                TailleLog2=$(ls -l /var/log/sauve2.log | cut -f 6 -d ' ')
                {

                rsync ...

                } >> /var/log/sauve.log 2>>/var/log/sauve2.log

                #test de problème
                if [ $TailleLog2 == $(ls -l /var/log/sauve2.log | cut -f 6 -d ' ') ]
                then
                kdialog --title "Script de sauvegarde" --error "Sauvegarde ok"
                else
                kdialog --title "Script de sauvegarde" --error "Problème lors de la sauvegarde. Consultez sauve2.log"
                fi

Suivre le flux des commentaires

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