-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy path.bash_functions.smartctl
32 lines (30 loc) · 1.15 KB
/
.bash_functions.smartctl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# vim: set ft=sh noet:
! declare 2>&1 | grep -wq ^colors= && [ $BASH_VERSINFO -ge 4 ] && source $initDir/.colors
test "$debug" -gt 0 && echo "=> Running $bold${colors[blue]}$(basename ${BASH_SOURCE[0]})$normal ..."
function lsdisks {
[ $osFamily = Linux ] && \ls /sys/class/block/ | sed "s|^|/dev/|" | egrep -v '/(loop|dm-|md|sr|z?ram|sd[a-z]+[0-9]+|nvme[0-9]n[0-9]p[0-9]|synoboot[0-9])'
[ $osFamily = Darwin ] && \ls /dev/disk{0..9} 2>/dev/null
}
function smartBadsectors {
$sudo -v
for disk
do
model=$(</sys/block/$(basename $disk)/device/model)
echo -e "=> disk = $disk\tmodel = $model"
$sudo smartctl -A $disk | awk '/Reallocated_Sector_Ct|Current_Pending_Sector|Offline_Uncorrectable/{bad+=$NF}END{print "=> Bad sectors = "bad}'
done
}
function smartPreFailValues {
$sudo -v
for disk
do
model=$(</sys/block/$(basename $disk)/device/model)
echo -e "=> disk = $disk\tmodel = $model"
$sudo smartctl -A $disk | grep -v "\s0$" | grep --color=always "Pre-fail.*\s[0-9]\+$"
done
}
function smartBadsectorsAllDisks {
smartBadsectors $(lsdisks)
}
set +x
test "$debug" -gt 0 && echo "=> END of $bold${colors[blue]}$(basename ${BASH_SOURCE[0]})$normal"