Page 1 of 1

3ware raid5 mit clir und crontabs überwachen

Posted: 25. Sep 2007 15:35
by peter6746
Hallo,

Ich habe einen 3ware Hardware Raid5 unter SuseLinux 10 Enterprise eingerichtet. Dies funktioniert auch!!!!,Das Problem ist nur das dieses Raid überwacht werden soll, dazu habe ich auch das passende toll gefunden und von der Hersteller Seite gezogen. Dieses funktioniert auch, jetzt möchte ich aber benachrichtigt werden wenn eine Festplatte abraucht !!!!!!! Diese Funktion wollte ich über einen crontab und ein script ermöglichen.
Der crontab sieht wie folgt aus:

*/15 * * * * root test -x /usr/local/sbin/check_raid.sh && /usr/local/sbin/check_raid.sh

Dieser führt ein Script (check_raid.sh) jede 15min aus. Das Script lautet wie folgt

Code: Select all

#!/bin/sh 
#
# This script checks
#
# - RAID Status
# - Drive Status
#
# on a 3ware 7006-2 ATA RAID Controller.
#
# returns 1 if RAID error was detected, 2 if DISK error was detected
#
# Marcus T. Jaschen < rikman &#40;@&#41; gmail >
# 2006-02-03
#

# tw_cli binary location
TWCLI=/usr/local/sbin/tw_cli

# controller name
CONTROLLER=c2

# get complete status
STATUS_CONTROLLER=`$TWCLI /$CONTROLLER show`

# check for RAID status
STATUS_RAID=`echo "$STATUS_CONTROLLER" | grep "^u0" | awk '&#123; print $3; &#125;'`

&#91;&#91; $STATUS_RAID != "OK" &#93;&#93; && &#123;
	echo "#################################################"
	echo "#             RAID ERROR DETECTED&#58;              #"
	echo "#################################################"
	echo "$STATUS_CONTROLLER"
	exit 1
&#125;

# check for disk status
STATUS_DISKS=`echo "$STATUS_CONTROLLER" | grep "^p&#91;&#91;&#58;digit&#58;&#93;&#93;" | awk '&#123; print $2; &#125;'`

&#91;&#91; -z `echo "$STATUS_DISKS" | grep -v "^OK$"` &#93;&#93; || &#123;
	echo "#################################################"
	echo "#             DISK ERROR DETECTED&#58;              #"
	echo "#################################################"
	echo "$STATUS_CONTROLLER"
	exit 2
&#125;

exit 0
Dieses Script benachrichtigt mich aber alle 15 min mit folgender Fehlermeldung:

Code: Select all

From root@node1.site  Tue Sep 25 17&#58;51&#58;04 2007
Return-Path&#58; <root@node1.site>
X-Original-To&#58; root
Delivered-To&#58; root@node1.site
Received&#58; by node1.site &#40;Postfix, from userid 0&#41;
	id 5B10317D7F; Tue, 25 Sep 2007 17&#58;51&#58;01 +0200 &#40;CEST&#41;
From&#58; root@node1.site
To&#58; root@node1.site
Subject&#58; Cron <root@node1> root test -x /usr/local/3ware/check_raid.sh && /usr/local/3ware/check_raid.sh
X-Cron-Env&#58; <SHELL=/bin/sh>
X-Cron-Env&#58; <HOME=/root>
X-Cron-Env&#58; <PATH=/usr/bin&#58;/bin>
X-Cron-Env&#58; <LOGNAME=root>
X-Cron-Env&#58; <USER=root>
Message-Id&#58; <20070925155104.5B10317D7F@node1.site>
Date&#58; Tue, 25 Sep 2007 17&#58;51&#58;01 +0200 &#40;CEST&#41;

/bin/sh&#58; root&#58; command not found
Es sollte mich aber nur im Ernstfall benachrichtigen, wenn eine Platte defekt ist!!!!!!!!!Was ist an dem Script falsch, habe keine Erfahrung mit so etwas!!
Danke schonmal im vorraus

mfg peter

[/list][/code]

root

Posted: 25. Sep 2007 19:59
by sumsi
Als Befehlsaufruf im cron "root". Na ja, das Programm kenne ich auch nicht.

Dokus gibts:
man 5 crontab oder
linux-praxis.de

bye sumsi

Posted: 26. Sep 2007 11:16
by Janka
Ich gehe mal davon aus, dass /bin/sh ein Link auf bash ist. Dann gehören da nur einfache Brackets "[" um den zu prüfenden Ausdruck, keine doppelten.

Abgesehen davon ist es meines Erachtens sinnvoller, den Syslog so umzukonfigurieren, dass kritische Fehler an ohnehin per Mail verschickt werden. Dann braucht man nicht alle paar Minuten pollen, sondern bekommt gleich die Meldungen per Mail, sobald der Treiber sie in den Syslog schreibt.

Janka

Posted: 26. Sep 2007 12:41
by peter783
Danke für die Antworten!!!
Wie schreibe ich die syslogs den um ,sodass sie mir den Fehler melden? Hättet ihr vielleicht eine Anleitung???

mfg peter

Posted: 26. Sep 2007 18:46
by Janka
Man kann in /etc/syslog-ng/syslog-ng.conf eine weitere

Code: Select all

destination mymail &#123; 
	program&#40;"/usr/bin/mailx loguser@loghost"&#41;; 
&#125;;
hinzufügen und dann die zuvor passend gefilterten Nachrichten dorthin umleiten.

Janka