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 |
|