aide pour un scrip place restante sur un disque dur

aide pour un scrip place restante sur un disque dur - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 13-07-2004 à 08:31:21    

Bonjour je cherche a faire un script qui m'avertit par mail lorsque le disque d'un linux est presque plein et seulement a ce moment la.  C'est facile d'en faire un qui envoie la taille restante tous les jours mais bon, la on ne lit jamais le mail quand il faut :D
 
Comment je peux évaluer ce que je recoit avec un  
 
df -h | grep /dev/hdb1 | cut -d ' ' -f 22  
 
 
ce qui me donne un     90%  
 
 
je voudrais faire que
 
si > 95%
alors mail
 
 
merci :)

Reply

Marsh Posté le 13-07-2004 à 08:31:21   

Reply

Marsh Posté le 13-07-2004 à 08:36:01    

je réponds a coté de la plaque ( mais je suis pressé là  ) mais regarde du coté de nagios ;)
tu as un certain nombre de monitorage possible & cela pourrait remplir d'autre fonction (autre que la vérification du simple disque dur )

Reply

Marsh Posté le 13-07-2004 à 08:48:35    

ok merci je vais regarder a ca...
 
 
mais si qqun peut quand meme me répondre juste pour ma culture scriptique :D
 
 
merci

Reply

Marsh Posté le 13-07-2004 à 09:13:14    

au lieu de 90% récup 90 que tu compares à 95
 
if($recup -gt 95 ) mail -s Asstention admin@toto.org


---------------
Fais le ou ne le fais pas, mais il n'y a pas d'essai !!!
Reply

Marsh Posté le 13-07-2004 à 09:49:43    

Voilà le script que j'utilise:
 

#!/bin/sh
 
PROGNAME=$(basename $0)
MAX_PCT=90
 
function log_mail() {
    df -h | mail -s "CRITICAL: $1 a un taux d'occupation superieur a $MAX_PCT%: ($2%)" root@localhost
    /usr/bin/logger -i -t ${PROGNAME} \
                "$1 a un taux d'occupation superieur a $MAX_PCT%: ($2%)"
}
 
 
# --------------------------------------------------------------------
# check free space per partition
# --------------------------------------------------------------------
df -P -l | grep -v "Sys." | while read i; do i=( ${i} )
 
    PCT=`echo ${i[4]} | cut -d'%' -f1`
 
    if [ $PCT -ge $MAX_PCT ]; then
        log_mail ${i[5]} $PCT
    fi
 
done
# --------------------------------------------------------------------
 
 
exit

Reply

Marsh Posté le 28-01-2006 à 07:00:18    

Bonjour,
 
Désolé de faire remonter ce topic mais le script m'intéresse. Où peut-on configurer le destinataire du mail ? Est-ce dans ce qu'on appelle les VARPATH ?
 
Merci de votre attention

Reply

Marsh Posté le 28-01-2006 à 08:12:50    

au début du script :
MAIL='adresse@domaine.tld'
 
et comme action :
mail $MAIL -s "Oula, on est serré dans ce slip"


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
Reply

Marsh Posté le 28-01-2006 à 10:33:21    

sous mandriva, tu as le script partmon qui fait ça bien :
 

Code :
  1. #!/usr/bin/perl
  2. #
  3. # Guillaume Cottenceau (gc@mandrakesoft.com)
  4. #
  5. # Copyright 2002 MandrakeSoft
  6. #
  7. # This software may be freely redistributed under the terms of the GNU
  8. # public license.
  9. #
  10. # You should have received a copy of the GNU General Public License
  11. # along with this program; if not, write to the Free Software
  12. # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  13. #
  14. #
  15. #use strict;
  16. use MDK::Common;
  17.  
  18. my ($verbose);
  19.  
  20. sub free_space {
  21.    my ($mntpoint) = @_;
  22.    my ($blocksize, $size, $avail);
  23.    my $buf = ' ' x 20000;
  24.    syscall_('statfs', $mntpoint, $buf) or return;
  25.    (undef, $blocksize, $size, undef, $avail, undef) = unpack "L!6", $buf;
  26.    return $avail * ($blocksize / 1024);
  27. }
  28.  
  29. my %partlimits = ( '/' => 20_000, '/tmp' => 20_000, '/usr' => 50_000, '/var' => 50_000, '/boot' => 5_000 );
  30.  
  31.  
  32. my $params = join '', @ARGV;
  33.  
  34. $params =~ /-h/ and die "usage: partmon [-v]\n";
  35. $params =~ /-v/ and $verbose = 1;
  36.  
  37.  
  38. my $ok = 1;
  39. foreach (cat_('/etc/fstab')) {
  40.    /^\s*#/ and next;
  41.    my (undef, $mountpoint, undef, undef, undef, undef) = split or next;  #- I want at least 6 fields to consider it a valid entry
  42.    member($mountpoint, keys %partlimits) or next;
  43.    my $free = free_space($mountpoint);
  44.    $verbose and print "Free space of <$mountpoint> is <$free>\n";
  45.    if ($free < $partlimits{$mountpoint}) {
  46.     print "Warning, free space for <$mountpoint> is only <", free_space($mountpoint), "> (which is inferior to <$partlimits{$mountpoint}>\n";
  47.     $ok = 0;
  48.    }
  49. }
  50.  
  51. $ok or exit -1;
  52.  
  53.  
  54. #-------------------------------------------------
  55. #- $Log: partmon.pl,v $
  56. #- Revision 1.1  2002/01/15 13:44:15  chmouel
  57. #- Add partition monitor from GC
  58. #-



---------------
Celui qui pose une question est idiot 5 minutes. Celui qui n'en pose pas le reste toute sa vie. |  Membre du grand complot pharmaceutico-médico-scientifico-judéo-maçonnique.
Reply

Marsh Posté le 28-01-2006 à 20:14:57    

Merci beaucoup, j'essayerai quand j'aurai le temps.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed