Forum Linux.debian/ubuntu script verification espace disque

Posté par  .
Étiquettes : aucune
0
25
oct.
2005
Bonjour a tous,
Voila je voudrai vérifier quotidiennement l'espace occupé sur mes disques. Je souhaite donc ecrire un script qui pourrait m'envoyer les résultats par email. une fois insérer dans le crontab, il s'executera toutes les semaines.
j'ai donc fait cela:

:!/bin/bash
df>/etc/scripts/espacedisque

Ainsi le résultat sera ecrit dans ce fichier mais comment faire pour que ensuite ce fichier parte sur mon mail ? Ou alors avez vous une autre solution pour récuprer l'espace de disque ?
Merci d'avance
  • # B i g B r o t h e r

    Posté par  . Évalué à 1.

    http://www.bb4.org/ disk, cpu , message, etc.

    C'est mieux avec le mode alert, donc l'email est envoyé seullement si certain condition requise.
    • [^] # Re: B i g B r o t h e r

      Posté par  . Évalué à 1.

      Tu as des actions chez Quest Software toi ;-)

      Tu peux utiliser la commande mail qui vient avec la package mailx.
      En gros c'est

      > mail -s "Sortie de df" toi@mail.org < /etc/scripts/espacedisque

      Tu peux même faire tout simplement

      > df | mail -s "Sortie de df" toi@mail.org

      Mais bon, je ne doute pas qu'il existe un soft qui fasse beaucoup mieux.
  • # par exemple

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

    df>/etc/scripts/espacedisque
    mutt -s "espace disque" moncompte < /etc/scripts/espacedisque

    Ca doit marcher aussi avec mail à la place de mutt (à vérifier)
  • # mail

    Posté par  . Évalué à 1.

    df | mail -s 'espace disque' ton@adresse.mail

    Plus d'infos : man mail

    Encore mieux avec une crontab toute bete :

    MAILTO=ton@adresse.mail
    df
  • # MAILTO

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

    suffit de lire la doc : 'man 5 crontab'
    ou http://seth.positivism.org/man.cgi/5/crontab

    extrait significatif:
    <<
    En plus de LOGNAME, HOME, et SHELL, cron(8) prendra en compte la vari-
    able MAILTO s'il doit envoyer le résultat d'une commande exécutée
    dans cette crontab. Si MAILTO est définie (et non vide), le résultat
    est envoyé à l'utilisateur indiqué. Si MAILTO est défini et vide
    (MAILTO=""), aucun courrier ne sera envoyé. Sinon, le courrier sera
    émis vers le propriétaire de la crontab.
    >>

    Donc du coup, il suffit de ne pas rediriger la sortie vers un fichier.

    Bon, bien sur, c'est la version du pauvre ( c'est-à-dire que si ta crontab contient d'autres taches, et qu'elles ne doivent pas envoyer de mails, il faut pousser la recherche vers d'autres outils)
    • [^] # Re: MAILTO

      Posté par  . Évalué à 1.

      merci a tous pour toutes ces réponses rapides je vais me pencher la dessu juste une tite question mon serveur linux n'est pas serveur mail cela ne va t'il pas empécher l'envoi ?
      Merci
      • [^] # Re: MAILTO

        Posté par  . Évalué à 1.

        Tu install Postfix et dans le fichier de conf tu indiques le serveur smtp (serveur mail) que tu utilises pour envoyer tes mails (dans le main.conf tu mets "relayhost = adresseserveurmail")
  • # surveillance

    Posté par  . Évalué à 5.

    Salut,

    Plutôt que de recevoir des mails sans arrêt alors que ton espace disque n'est pas remplit, il vaut mieux être avertit quand ça va mal, choisir donc un seuil à partir duquel il faut être avertit, voici le script:

    #!/bin/bash
    #
    df -k | grep "^/dev" | while read FS

    do
    FS_NAME=`echo $FS | awk -F' ' '{print $7}'`
    FS_SIZE=`echo $FS | awk -F' ' '{print $4}' | cut -d'%' -f1`

    if [ $FS_SIZE -gt 95 ] ; then
    echo "Filesystem $FS_NAME utilise a plus de ${FS_SIZE}%" | mailx -s "ALERTE_FS_$SERV" destinataire@toto.fr
    fi
    done
    exit 0

    Ce script a été fait sous AIX, pour Linux, il te faudra changer les valeurs données à AWK car la commande "df" de linux colonnise un peu différemment les choses.

    Pour l'envoi du mail, il faut installer un smtp sur ton poste et faire en sorte qu'il envoi les mails au smtp faisant autorité dans ton domaine (champs MX du DNS), ensuite mettre ce script en crontab selon la périodicité que tu souhaite.

    voilà

    dabowl_75

    • [^] # Re: surveillance

      Posté par  . Évalué à 6.

      Pfffff Dans lle genre efficace, on fait mieux ...

      FS_SIZE=`echo $FS | awk -F' ' '{print $4}' | cut -d'%' -f1`

      Pourquoi ne pas faire tout en awk?


      df -k | awk '
      /\/dev/ {
      split($4,tmp,"%");
      FS_SIZE=tmp[1];
      if (FS_SIZE > 95) {
      print "Filesystem " $1 " utilise a "FS_SIZE "%" | "mailx -s \"Test espace disque\" user@host"
      }
      }
      '
      • [^] # Re: surveillance

        Posté par  . Évalué à 3.

        Et encore y a mieux:

        df -k | awk '
        /\/dev/ {
        split($4,tmp,"%");
        if (tmp[1]> 95) {
        print "Filesystem " $1 " utilise a " $4 | "mailx -s \"Test espace disque\" user@host"
        }
        }
        '
      • [^] # Re: surveillance

        Posté par  . Évalué à 2.

        parce que mon code est plus lisible par une grande majorité :-)

        dabowl_75

        • [^] # Re: surveillance

          Posté par  . Évalué à 3.

          Il est plus lisible mais moins efficace lorsqu'il doit traiter un grand nombre de lignes (un fork+exec a chaque commande appelée). Et puis surtout faire du awk+cut je trouve ça un peu idiot.

Suivre le flux des commentaires

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