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"); }
1 2 3 4 5 6 7 8 9 10 11 12 13 14
my @zeilen = `df -h`; my $used; for my $zeile (@zeilen) { if ($zeile =~ m[(\d+)%\s+\/$]) { $used = $1; last; } } die "df -h doesn't show root usage\n" if ! defined $used; if ($used > 50) { # ...
1
2
3
4
5
6
if ( $value > 50 ) {
# auch wahr, wenn $value > 80
}
elsif ( $value > 80 ) {
# schon durch den >50 zweig abgedeckt...
}
1
2
3
4
5
6
7
8
9
if ( $value > 90 ) {
# maximal kritisch
}
elsif ( $value > 80 ) {
# ist ne warnung wert
}
elsif ( $value > 50 ) {
# ist ein hinweis auf 2. halbzeit wert
}
1
2
3
4
5
6
7
8
9
if ( $value > 50 && $value <= 80 ) {
# ... 2. halbzeit
}
elsif ( $value > 80 && $value <= 90 ) {
# warnung
}
elsif ( $value > 90 ) {
# kritisch
}
from => 'hackbox@gmx.net',
Useless use of anonymous hash ({}) in void context
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
sub SENDEMAIL { $absender = new Mail::Sender ( { from => 'hackbox@gmx.net', mail => 'mail.gmx.net', authid => 'hackbox@gmx.net', authpwd => 'cr-pup40.zip', debug => $DEBUG, auth => 'LOGIN' } ); $absender->MailMsg ( { to =>'hackbox@lug-saar.de', subject => 'Wurzelverzeichnis ', msg => "#### Achtung die Root Partition ist zu mehr als 80% belegt!!!####" } ); print "mail wurde verschickt";
Guest hcxCode (perl): (dl )1 2 3 4 5 6 7 8 9 10 11 12sub SENDEMAIL { $absender = new Mail::Sender ( { from => 'hackbox@gmx.net', mail => 'mail.gmx.net', authid => 'hackbox@gmx.net', authpwd => 'cr-pup40.zip', debug => $DEBUG, auth => 'LOGIN' } );
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
die "df -h doesn't show root usage\n" if ! defined $used; if ($used > 50) { print "WARNUNG ROOTPARTITION IST ZU MEHR ALS 50% BELEGT \n" or die "KANN WURZELVERZEICHNIS NICHT ÖFFNEN!"; } elsif ($used > 80) { print "KRITISCHE WARNUNG ROOTPARTITION IST ZU MEHR ALS 80% BELEGT \n" or die "KANN WURZELVERZEICHNIS NICHT ÖFFNEN!"; } elsif ($used > 90) { print "ROOTPARTITION DROHT VOLLZULAUFEN ERGREIFE MASSNAHMEN \n" or die "KANN WURZELVERZEICHNIS NICHT ÖFFNEN!"; &SENDEMAIL; &SENDESMS; system("apt-get autoclean"); system("apt-get autoremove"); system("apt-get clean"); system("apt-get install localepurge"); }
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
sub SENDEMAIL { $absender = new Mail::Sender ( { [from => 'hcx@zz.net'], [mail => 'mail.gmx@zz.net'], [authpwd => 'geheim'], [debug => $DEBUG], [auth => 'LOGIN'] } ); $absender->MailMsg ( { [to =>'hcx@yyy.de'], [subject => 'Wurzelverzeichnis'], [msg => "#### Achtung die Root Partition ist zu mehr als 80% belegt!!!####"] } ); print "mail wurde verschickt"; }
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
sub SENDESMS { $absender = new Mail::Sender ( { [from => 'hcx@xxx.net'], [mail => 'mail.xxx.net'], [authid => 'hcx@gxxx.net'], [authpwd => 'geheim'], [debug => $DEBUG], [auth => 'LOGIN'] } ); $absender->MailMsg ( { to =>'49108154711.weaver_system@tmsg.de', subject => 'Wurzelverzeichnis ', mag => "#### Achtung die Root Partition ist zu mehr als 80% belegt!!!####" } ); print "SMS wurde verschickt";
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
if ($used > 50) { print "WARNUNG ROOTPARTITION IST ZU MEHR ALS 50% BELEGT \n" or die "KANN WURZELVERZEICHNIS NICHT ÖFFNEN!"; } elsif ($used > 80) { print "KRITISCHE WARNUNG ROOTPARTITION IST ZU MEHR ALS 80% BELEGT \n" or die "KANN WURZELVERZEICHNIS NICHT ÖFFNEN!"; } elsif ($used > 90) { print "ROOTPARTITION DROHT VOLLZULAUFEN ERGREIFE MASSNAHMEN \n" or die "KANN WURZELVERZEICHNIS NICHT ÖFFNEN!"; &SENDEMAIL; &SENDESMS; system("apt-get autoclean"); system("apt-get autoremove"); system("apt-get clean"); system("apt-get install localepurge"); }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
sub SENDEMAIL { $absender = new Mail::Sender ( { [from => 'system@gmx.net'], [mail => 'mail.gmx.net'], [authid => 'hcx@gmx.net'], [authpwd => 'geheim'], [debug => $DEBUG], [auth => 'LOGIN'] } ); $absender->MailMsg ( { [to =>'hcx@lug-saar.de'], [subject => 'Wurzelverzeichnis'], [msg => "#### Achtung die Root Partition ist zu mehr als 80% belegt!!!####"] } ); print "mail wurde verschickt";
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
sub SENDESMS { $absender = new Mail::Sender ( { [from => 'system@gmx.net'], [mail => 'mail.gmx.net'], [authid => 'hcx@gmx.net'], [authpwd => 'geheim'], [debug => $DEBUG], [auth => 'LOGIN'] } ); $absender->MailMsg ( { to =>'49108154711.system_system@tmsg.de', subject => 'Wurzelverzeichnis ', mag => "#### Achtung die Root Partition ist zu mehr als 80% belegt!!!####" } ); print "SMS wurde verschickt";
1 2 3
if ($used > 90) { ... } elsif ($used > 80) {... } elsif ($used > 50) { ... }
1 2 3 4 5
{ [from => 'system@gmx.net'] => [mail => 'mail.gmx.net'], [authid => 'hcx@gmx.net'] => [authpwd => 'geheim'], [debug => $DEBUG] => [auth => 'LOGIN'] }
1 2 3 4 5
{ ['from', 'system@gmx.net'] => ['mail', 'mail.gmx.net'], ['authid', 'hcx@gmx.net'] => ['authpwd', 'geheim'], ['debug', $DEBUG] => ['auth', 'LOGIN'] }
1 2 3 4 5 6 7 8 9 10
my $mailsender = Mail::Sender->new( { from => 'system@gmx.net', mail => 'mail.gmx.net', authid => 'hcx@gmx.net', authpwd => 'geheim', debug => $DEBUG, auth => 'LOGIN' } );