diff options
| author | Simon Rettberg | 2014-01-10 15:39:54 +0100 |
|---|---|---|
| committer | Simon Rettberg | 2014-01-10 15:39:54 +0100 |
| commit | d1066678b367942a74ab8c93e65f7bd29b7e3a92 (patch) | |
| tree | bbbeaf4c477d780530a3a538df3235cb31968d12 /remote/modules/smartctl/data/opt/openslx/scripts/systemd-smartctl | |
| parent | [rfs-stage31] Don't wait for br0 up if /sys/.../operstate doesn't exist (diff) | |
| download | tm-scripts-d1066678b367942a74ab8c93e65f7bd29b7e3a92.tar.gz tm-scripts-d1066678b367942a74ab8c93e65f7bd29b7e3a92.tar.xz tm-scripts-d1066678b367942a74ab8c93e65f7bd29b7e3a92.zip | |
[smartctl] Also parse health status reported by drive
Diffstat (limited to 'remote/modules/smartctl/data/opt/openslx/scripts/systemd-smartctl')
| -rwxr-xr-x | remote/modules/smartctl/data/opt/openslx/scripts/systemd-smartctl | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/remote/modules/smartctl/data/opt/openslx/scripts/systemd-smartctl b/remote/modules/smartctl/data/opt/openslx/scripts/systemd-smartctl index 6025c962..6a798563 100755 --- a/remote/modules/smartctl/data/opt/openslx/scripts/systemd-smartctl +++ b/remote/modules/smartctl/data/opt/openslx/scripts/systemd-smartctl @@ -2,18 +2,30 @@ # Check Reallocated_Sector_Ct and Spin_Retry_Count of local disk(s) +. /opt/openslx/config + +[ -z "$SLX_SMARTCTL_MIN_REALLOC" ] && SLX_SMARTCTL_MIN_REALLOC=0 + FILE=$(mktemp) for dev in /dev/sd?; do - smartctl -A "$dev" -f "brief" > "$FILE" || continue # should we report devices where smartctl doesn't work? + smartctl -H -A -f "brief" "$dev" > "$FILE" || continue # should we report devices where smartctl doesn't work? + # parse + OVERALL=$(grep -o "test result: .*$" "$FILE" | cut -c 14-) + [ "x$OVERALL" = "xPASSED" ] && OVERALL="" REALLOC=$(grep "^ *5 " "$FILE" | awk '{print $8}') SPINRETRY_VAL=$(grep "^ *10 " "$FILE" | awk '{print $4}') SPINRETRY_THR=$(grep "^ *10 " "$FILE" | awk '{print $6}') - if [ -n "$REALLOC" ] && [ "$REALLOC" != "0" ]; then + # report if applicable + if [ -n "$OVERALL" ]; then + slxlog "smartctl-fail" "Failed HDD: $dev reports health as $OVERALL" "$FILE" + fi + if [ -n "$REALLOC" ] && [ "$REALLOC" -gt "$SLX_SMARTCTL_MIN_REALLOC" ]; then slxlog "smartctl-realloc" "Failing HDD: $dev has $REALLOC reallocated sectors!" "$FILE" fi if [ -n "$SPINRETRY_VAL" ] && [ "$SPINRETRY_VAL" -le "$SPINRETRY_THR" ]; then slxlog "smartctl-spinretry" "Failing HDD: $dev has bad spin retry count! ($SPINRETRY_VAL/$SPINRETRY_THR)" "$FILE" fi done +sleep 2 # give slxlog a little time, as it's running async rm -f -- "$FILE" |
