Thread Fehlersuche Skript gibt falsche Warnungen aus (14 answers)
Opened by hcx at 2011-08-03 12:08

hcx
 2011-08-03 12:08
#151031 #151031
User since
2011-07-02
5 Artikel
BenutzerIn
[default_avatar]
Hallo Perlmonks,

ich brauche mal wieder euere Hilfe. Ich habe mir ein Skript geschrieben, welches bei verschiedenen Graden der Belegung des / Verzeichnisses Warnungen ausgeben soll, indem es mir eine Email schickt. Klappt soweit ganz gut, doch schickt es falsche Meldungen z.B. "VORSICHT das Wurzelverzeicnis ist zu mehr als 80 % belegt " , obwohl mir ein df -h lediglich 63 % anzeigt.
Finde jedch den Fehler nicht - wahrscheinlich ein ganz blöder:

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#!/usr/bin/perl -w
# Dieses Skript analysiert die Belegung der Festplatten
# und gibt Warnungen aus, sofern das Wurzelverzeichnis zu mehr als 50 und 80% belegt ist
# bei 90% Belegung wird eine Warnung ausgegeben und die Platte von Datenmuell gesäubert
#
#
#


use Mail::Sender;
#use SMS::SMS77;
#use Net::SMS::Massenversand;
use strict;
my @zeilen = `df -h`;
my $zeilenanzahl = @zeilen;
my $zeilennummer = 0;
my $wurzelverzeichnis = $zeilen[$zeilennummer];
my $absender;
my $DEBUG;
while($zeilennummer < $zeilenanzahl) {
        my @spalten = split(' ',$zeilen[$zeilennummer]);   # die aktuelle Zeile wird aufgespalten in die einzelnen Spalten Muster ' ' steht für                                                           # ein Leerzeichen mittels dessen der Inhalt der Spalten getrennt ist 
        my $letzte_spalte = $spalten[@spalten-1];          # mit [@spalten-1] wird das letzte Element des Arrays qspalten ermittelt
        if($letzte_spalte eq "/") {                        # sofern die letzte Spalte das / enthält ist es das Wurzelverzeichnis
                $wurzelverzeichnis = $zeilen[$zeilennummer];
        }
        $zeilennummer = $zeilennummer+1;

}
chomp($wurzelverzeichnis);
my @spalten = split(' ',$wurzelverzeichnis);

my @use = split('%',$spalten[4]);

print "marker1 Belegung des Wurzelverzeichnisses betraegt aktuell @use\n";
if ($use[0] > 50) {
        &SENDEMAIL;
        print "marker2 Verschicke eine Mail, daß Wurzelverzeichnis zu mehr als 50% belegt ist.\n";
        print "##### ACHTUNG das Wurzelverzeichnis ist zu mehr als 50% belegt! ####\n";

}
if ($use[0] > 80) {
        &SENDEMAIL;
        print "marker3 Verschicke eine Mail, dass Wurzelverzeicnis zu mehr als 80% belegt ist.\n";
        &SENDESMS;
        print "#### VORSICHT das Wurzelverzeicnis ist zu mehr als 80 % belegt ####\n";
}
if ($use[0] > 90) {
        &SENDEMAIL;
        &SENDESMS;
        print "##### WARNUNG DAS WUZELVERZEICNIS HAT DIE KRITISCHE MARKE VON MEHR ALS 90% ÜBERSCHRITTEN!!! ####\n";
        system("apt-get autoclean");
        system("apt-get autoremove");
        system("apt-get clean");
        system("apt-get install localepurge");

}


Schon jetzt vielen Dank für euere Hilfe und Anregungen - bitte Geduld ich bin mit Perl erst ganz am Anfang.

Gruss

hcx

View full thread Fehlersuche Skript gibt falsche Warnungen aus