| Line 5... |
Line 5... |
| 5 |
# Copyright (c) 2005,2006: Ira W. Snyder (devel@irasnyder.com)
|
5 |
# Copyright (c) 2005,2006: Ira W. Snyder (devel@irasnyder.com)
|
| 6 |
# License: GNU General Public License v2 (or at your option, any later version)
|
6 |
# License: GNU General Public License v2 (or at your option, any later version)
|
| 7 |
#
|
7 |
#
|
| 8 |
################################################################################
|
8 |
################################################################################
|
| 9 |
|
9 |
|
| - |
|
10 |
# This script needs dd, mktemp, smartctl, cstream, mailx, tee, sleep, echo,
|
| - |
|
11 |
# date, hostname, and rm in your path in order to work at all.
|
| - |
|
12 |
|
| 10 |
################################################################################
|
13 |
################################################################################
|
| 11 |
### Config Options ###
|
14 |
### Config Options ###
|
| 12 |
################################################################################
|
15 |
################################################################################
|
| 13 |
|
16 |
|
| 14 |
TMPFILE="$(mktemp)" || echo "Failed to create tempfile" && exit 1
|
17 |
TMPFILE="$(mktemp)" || echo "Failed to create tempfile" && exit 1
|
| 15 |
EMAIL_ADDR="ira@irasnyder.com"
|
18 |
EMAIL_ADDR="ira@irasnyder.com"
|
| 16 |
EMAIL_FILE="${TMPFILE}"
|
19 |
EMAIL_FILE="${TMPFILE}"
|
| 17 |
RAID_DEVICE="/dev/md0"
|
20 |
RAID_DEVICE="/dev/md0"
|
| 18 |
RAID_DRIVES="/dev/sd[abcdefgh]"
|
21 |
RAID_DRIVES="/dev/sd[abcdefgh]"
|
| - |
|
22 |
DD_SPD_LIMIT="80M"
|
| - |
|
23 |
SMART_SLEEP_TIME="160m"
|
| 19 |
|
24 |
|
| 20 |
################################################################################
|
25 |
################################################################################
|
| 21 |
### Functions ###
|
26 |
### Functions ###
|
| 22 |
################################################################################
|
27 |
################################################################################
|
| 23 |
|
28 |
|
| Line 72... |
Line 77... |
| 72 |
# should then re-read the newly written data to make sure it's ok.
|
77 |
# should then re-read the newly written data to make sure it's ok.
|
| 73 |
#
|
78 |
#
|
| 74 |
# Source: http://www.ussg.iu.edu/hypermail/linux/kernel/0601.2/1200.html
|
79 |
# Source: http://www.ussg.iu.edu/hypermail/linux/kernel/0601.2/1200.html
|
| 75 |
#
|
80 |
#
|
| 76 |
echo "Reading the whole disk: dd if=${RAID_DEVICE} of=/dev/null" | tee -a "$EMAIL_FILE"
|
81 |
echo "Reading the whole disk: dd if=${RAID_DEVICE} of=/dev/null" | tee -a "$EMAIL_FILE"
|
| 77 |
dd if="${RAID_DEVICE}" of=/dev/null 2>&1 | tee -a "$EMAIL_FILE"
|
82 |
dd if="${RAID_DEVICE}" | cstream -t"${DD_SPD_LIMIT}" -T300 -v1 -o- | tee -a "$EMAIL_FILE"
|
| 78 |
echo | tee -a "$EMAIL_FILE"
|
83 |
echo | tee -a "$EMAIL_FILE"
|
| 79 |
echo | tee -a "$EMAIL_FILE"
|
84 |
echo | tee -a "$EMAIL_FILE"
|
| 80 |
|
85 |
|
| 81 |
# Run smartctl on each drive, sleeping in between each one
|
86 |
# Run smartctl on each drive, sleeping in between each one
|
| 82 |
for d in $RAID_DRIVES;
|
87 |
for d in $RAID_DRIVES;
|
| 83 |
do echo "SMART checking drive: ${d}" | tee -a "$EMAIL_FILE"
|
88 |
do echo "SMART checking drive: ${d}" | tee -a "$EMAIL_FILE"
|
| 84 |
echo "=================================================" | tee -a "$EMAIL_FILE"
|
89 |
echo "=================================================" | tee -a "$EMAIL_FILE"
|
| 85 |
smartctl -t long "${d}" 2>&1 | tee -a "$EMAIL_FILE"
|
90 |
smartctl -t long "${d}" 2>&1 | tee -a "$EMAIL_FILE"
|
| 86 |
echo | tee -a "$EMAIL_FILE"
|
91 |
echo | tee -a "$EMAIL_FILE"
|
| 87 |
echo | tee -a "$EMAIL_FILE"
|
92 |
echo | tee -a "$EMAIL_FILE"
|
| 88 |
sleep 160m
|
93 |
sleep "${SMART_SLEEP_TIME}"
|
| 89 |
smartctl -d ata -l selftest "${d}" 2>&1 | tee -a "$EMAIL_FILE"
|
94 |
smartctl -d ata -l selftest "${d}" 2>&1 | tee -a "$EMAIL_FILE"
|
| 90 |
echo | tee -a "$EMAIL_FILE"
|
95 |
echo | tee -a "$EMAIL_FILE"
|
| 91 |
echo | tee -a "$EMAIL_FILE"
|
96 |
echo | tee -a "$EMAIL_FILE"
|
| 92 |
done;
|
97 |
done;
|
| 93 |
|
98 |
|