Subversion Repositories programming

Rev

Rev 241 | Rev 284 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 241 Rev 283
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