diff options
| author | Anton Bobov <abobov@gmail.com> | 2018-01-21 00:00:43 +0500 |
|---|---|---|
| committer | Anton Bobov <abobov@gmail.com> | 2018-01-21 00:01:52 +0500 |
| commit | ae5ce758ce3132ea3f7719c36a80b55ccb8af997 (patch) | |
| tree | d61a32d17e53d677437ea408c283a4a74cb8de01 /smartinfo | |
| parent | d9bb1632d27d65ce6c4ddf2758f8d51b9d37ccfb (diff) | |
SMART script update.
Diffstat (limited to 'smartinfo')
| -rwxr-xr-x | smartinfo | 23 |
1 files changed, 20 insertions, 3 deletions
@@ -9,14 +9,30 @@ die() { } get_file_name() { - sn=$(sed -n 's/Serial Number: \+//p' < "$1" | tr ' ' '_') - printf 'smart-%s-%s.txt' "$sn" "$(date +%F)" + sn=$(sed -n 's/^Serial Number: \+//p' < "$1") + dm=$(sed -n 's/^Device Model: \+//p' < "$1") + printf 'smart-%s-%s-%s.txt' "$dm" "$sn" "$(date +%F-%H-%M-%S)" | tr ' ' '_' +} + +smart_bits() { + code=$1 + echo "WARNING: S.M.A.R.T. exit code was $code" + echo -n "Check man 8 smartctl for EXIT STATUS section on bits: " + val=$code + mask=1 + for i in 0 1 2 3 4 5 6 7; do + if ((($val & $mask) && 1)) ; then + echo "$i " + fi + mask=$((mask << 1)) + done + echo } [ -b "$1" ] && DEVICE="$1" || die 'First parameter must be block device.' tmp=$(tempfile) -sudo smartctl -Ai "$DEVICE" > "$tmp" +sudo smartctl -x "$DEVICE" > "$tmp" || smart_bits $? 1>&2 fname=$(get_file_name "$tmp") if [ -f "$fname" ] ; then echo "File $fname already exists. Override? [yN] " @@ -30,3 +46,4 @@ if [ -f "$fname" ] ; then esac fi mv "$tmp" "$fname" +echo "File: $fname" |
