Line 0
Link Here
|
|
|
1 |
#!/bin/sh |
2 |
# |
3 |
# Shows status of 3ware RAID controllers: twa(4), twe(4) |
4 |
# |
5 |
# Authors: Bjoern A. Zeeb, Dmitry Frolov |
6 |
# |
7 |
# $FreeBSD$ |
8 |
# |
9 |
|
10 |
# If there is a global system configuration file, suck it in. |
11 |
# |
12 |
if [ -r /etc/defaults/periodic.conf ] |
13 |
then |
14 |
. /etc/defaults/periodic.conf |
15 |
source_periodic_confs |
16 |
fi |
17 |
|
18 |
# Defaults. |
19 |
: ${daily_status_3ware_raid_enable:=NO} |
20 |
# Alarms persist between "tw_cli alarms" invocation? |
21 |
# Set to YES for twa(4) and to NO for twe(4). |
22 |
: ${daily_status_3ware_raid_persist_alarms:=YES} |
23 |
|
24 |
tw_cli=${tw_cli:-%%PREFIX%%/sbin/tw_cli} |
25 |
logdir=${logdir:-/var/log} |
26 |
|
27 |
case "$daily_status_3ware_raid_enable" in |
28 |
[Yy][Ee][Ss]) |
29 |
echo |
30 |
echo 'Checking status of 3ware RAID controllers:' |
31 |
|
32 |
rc=0 |
33 |
|
34 |
# Checking each controller. |
35 |
for ctrl in `${tw_cli} info | awk '/^c/ { print $1 }'` |
36 |
do |
37 |
echo "" |
38 |
echo "Controller ${ctrl}:" |
39 |
ctrl_log=${logdir}/3ware_raid_${ctrl} |
40 |
if test ! -f ${ctrl_log}.today; then |
41 |
touch ${ctrl_log}.today |
42 |
fi |
43 |
mv -f ${ctrl_log}.today ${ctrl_log}.yesterday |
44 |
${tw_cli} info ${ctrl} > ${ctrl_log}.today |
45 |
lines=`wc -l ${ctrl_log}.today | awk '{ print $1 }'` |
46 |
diff -u -$lines ${ctrl_log}.yesterday ${ctrl_log}.today |
47 |
raid_rc=$? |
48 |
if test $raid_rc -eq 0; then |
49 |
cat ${ctrl_log}.today |
50 |
fi |
51 |
[ $rc -eq 0 ] && [ $raid_rc -ne 0 ] && rc=3 |
52 |
done |
53 |
|
54 |
# Checking alarms. |
55 |
echo "Alarms (most recent first):" |
56 |
alarms_log=${logdir}/3ware_raid_alarms |
57 |
case "$daily_status_3ware_raid_persist_alarms" in |
58 |
[Yy][Ee][Ss]) |
59 |
if test ! -f ${alarms_log}.today; then |
60 |
touch ${alarms_log}.today |
61 |
fi |
62 |
mv -f ${alarms_log}.today ${alarms_log}.yesterday |
63 |
${tw_cli} alarms > ${alarms_log}.today |
64 |
cmp -zs ${alarms_log}.yesterday ${alarms_log}.today |
65 |
raid_rc=$? |
66 |
if test $raid_rc -ne 0; then |
67 |
diff -u ${alarms_log}.yesterday ${alarms_log}.today | \ |
68 |
grep -v '^-\|^$' |
69 |
fi |
70 |
;; |
71 |
*) |
72 |
raid_rc=0 |
73 |
${tw_cli} alarms > ${alarms_log}.today |
74 |
lines=`wc -l ${alarms_log}.today | awk '{ print $1 }'` |
75 |
if test $lines -gt 4; then |
76 |
cat ${alarms_log}.today |
77 |
raid_rc=1 |
78 |
fi |
79 |
;; |
80 |
esac |
81 |
if test $raid_rc -eq 0; then |
82 |
echo " No new alarms." |
83 |
fi |
84 |
[ $rc -eq 0 ] && [ $raid_rc -ne 0 ] && rc=3 |
85 |
;; |
86 |
|
87 |
*) rc=0;; |
88 |
esac |
89 |
|
90 |
exit $rc |
91 |
|
92 |
# end |