|
|
|
Impressum |
| Scripte | |||
| Netzwerk | |||
| Software | |||
| Tips |
|
RaidCheck
Dieses Script überprüft ein Raidsystem durch auslesen des Files /proc/mdstat. Ist das Raissystem gestört, erfolgt eine Nachricht per Mail. #!/bin/bash # # Check Raidsystem # Version 1.0 # Author: Thomas (Major Tom) Bauer <major-tom@tkb-net.org> # http://www.tkb-net.org # cd /etc/cron.sonstige # Raid-System check cat /proc/mdstat | grep "md0" -A1 | grep "UUUU" >mdstat_md0 # If Raid ok (Filesize mdstat_md0 > 0) then ok, else write status to file mdstatus if test -s mdstat_md0 then echo md0 ok else echo md0 failed >mdstatus cat /proc/mdstat | grep "md0" -A1 >>mdstatus fi # If a Raid failed (Filesize mdstatus > 0) then send a mail if test -s mdstatus then mail admin@meine-domain.org -r admin@meine-domain.org -s Raidcheck-Server <mdstatus rm mdstatus fi # Delete Tempfile rm mdstat_md0 Erläuterung Der aktuelle Status eines Raidsystems ist in der Datei /proc/mdstat enthalten. Mit cat wird diese Datei ausgegeben und über die Pipe | an den Befehl grep übergeben. Der Befehl grep filtet zuerst alle Zeilen mit dem Inhalt "md0" (Bezeichung meines Raidsystems, auf anderen System oder bei mehreren Raidsystemen ist/sind auch md1, md2 usw. möglich) und übergibt diese und die darauffolgende Zeile (Schalter -A1) als Ergebnis wieder über eine Pipe | an einen weiteren Befehl grep. Dieser prüft nun, ob in der Ausgabe der Text "UUUU" enthalten ist und schreibt das Ergebnis in die Datei "mdstat_md0". Da ich ein Raid5 aus vier Festplatten betreibe, muss im fehlerfreien Betrieb in der Datei /proc/mdstat UUUU stehen. Dabei steht jedes U für eine Festplatte. Ist eine Platte ausgefallen wird das U durch _ ersetzt, also z.B. UU_U. Bei Systemen mit weniger Platten, z.B. Raid1 sucht man natürlich nur nach UU. Als nächster Schritt wird mit if test -s geprüft, ob die Datei "mdstat_md0" vorhanden und grösser als 0 ist (in diesem Fall ist alles in Ordnung). Falls nicht, wird in die Datei "mdstatus" geschrieben, welches Raidsystem gestört ist und die entsprechenden Zeilen aus der Datei /proc/mdstat werden mit angefügt. Am Ende wird mit if test -s überprüft, ob die Datei "mdstatus" vorhanden und größer als 0Byte ist (Ein Raidsystem gestört). Ist das der Fall, sendet das Script mit dem Befehl mail den Inhalt der Datei "mdstatus" an den gewünschten Empfänger. Der Schalter -s setzt dabei den Betreff der Mail (in diesem Fall "Raidcheck-Server"), der Schalter -r setzt eine Absender-Mailadresse (nur nötig, wenn man die Mail über einen externen Mailserver leiten muss, sonst wird die Mail durch die dort vorhandenen Spam-Filter aufgehalten.). Die Datei "mdstatus" wird gelöscht. Zum Schluss wird die Datei "mdstat_md0" noch gelöscht, da sie jetzt nicht mehr benötigt wird. |