#!/bin/sh DISKS="$(echo /dev/sd?)" PATH=$PATH:/sbin:/usr/sbin for i in ${DISKS} do SMARTDATA=$(smartctl -a $i | \ egrep 'Device Model:|Serial Number:|Reallocated_Sector_Ct|Current_Pending_Sector|Offline_Uncorrectable|failed|Unknown USB' | \ grep -v ' - *0$') LINES=$(echo "${SMARTDATA}" | wc -l) HEAD=$(echo "${SMARTDATA}" | \ sed -n -e 's/Device Model: //p' \ -e 's!Serial Number:!S/N!p') BODY=$(echo "${SMARTDATA}" | \ awk '$2 ~ /Reallocated_Sector_Ct/ { printf "Reallocated Sectors: %3d\n", $10 } $2 ~ /Current_Pending_Sector/ { printf "Current Pending Sect: %3d\n", $10 } $2 ~ /Offline_Uncorrectable/ { printf "Offline Uncorrectable: %3d\n", $10 } $0 ~ /failed:.*AMCC/ { printf "Unsupported AMCC/3ware controller\n" } $0 ~ /SMART command failed/ { printf "Device does not support SMART\n" } $0 ~ /Unknown USB bridge/ { printf "Unknown USB bridge\n" } ' ) if [ $LINES -eq 2 ] then echo === $i : ${HEAD} OK else echo === $i : ${HEAD} "*** ERRORS ***" echo "${BODY}" | sed -e 's/^/ /' fi done