#!/bin/bash

PATH=/sbin:/root/bin:/root/bin/boojum:/usr/local/bin:/usr/local/sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin

# will run ~5 min after smart stage2 and list only attributes that backblaze keeps track of

outfile=~/smartlog-attrib-shortreport.log
mv -v "$outfile" "$outfile--prev"
touch $outfile
chmod 750 $outfile # -rwxr-x---

myhn=$(hostname)

# ls disk by id, no partitions, only certain fields, get rid of '../'
#ls -l /dev/disk/by-id |grep -v part |awk '{ print $11" "$10" "$9 }' |sed 's%../%%g' |sort
# orig line:
#lrwxrwxrwx 1 root root  9 Feb 20 11:15 ata-ST4000VN000-1H4168_Z3076 -> ../../sdk
# Fields:                               9                               10 11
#  sda -> ata-WDC_WD30EURX-73T0FY0_WD-WMC4N0
#  sda -> wwn-0x50014ee6051490
#  sdb -> ata-ST2000VN000-1HJ164_W523
#  sdb -> wwn-0x5000c5009c42d5

echo "o Disk translation table:" >> $outfile  
/bin/ls -l /dev/disk/by-id/ \
  | grep -v part \
  | awk '{ print $11" "$10" "$9 }' \
  | sed 's%../%%g' \
  | sort \
  >> $outfile

for d in /dev/sd?; do
  echo "o BEGIN SMART attrib report for $d " >> $outfile

  echo "========================" >> $outfile

  smartctl -a $d |head -n 16 >> $outfile
  smartctl -a $d |egrep 'ID#|Power_On|Reallocated|Uncorrect|Timeout|Pending_Sector' >> $outfile
  smartctl -a $d |grep -A 2 'log structure' >> $outfile

#SMART Self-test log structure revision number 1
#Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Extended offline    Completed without error       00%      1973         -

  echo "========================" >> $outfile
#  echo "o END OF SMART attrib report for $d " >> $outfile
    
done

echo "o $myhn @ $(date) - FINISHED SMART short attrib report" >> $outfile

exit;


# grep sdd /tmp/fdisk-l.txt |egrep 'ata|wwn' 
# ^^ is a cheat, and will not work right if any disks have been changed since boot / rc.local ran last
# so better we do it OTF
ata-ST4000VN000-1H4168_Z3073Z7X -> sdd
wwn-0x5000c500917978f5 -> sdd
              
SMART reports on 5 fields: REF: https://www.backblaze.com/blog/what-smart-stats-indicate-hard-drive-failures/
[[
For the last few years we’ve used the following five SMART stats as a means of helping determine if a drive is going to fail.
Attribute               Description
SMART 5                 Reallocated Sectors Count
SMART 187               Reported Uncorrectable Errors
SMART 188               Command Timeout
SMART 197               Current Pending Sector Count
SMART 198               Uncorrectable Sector Count
]]

=== START OF INFORMATION SECTION ===
Model Family:     SandForce Driven SSDs
Device Model:     KINGSTON SH103S3120G
LU WWN Device Id: 5 0026b7 23a07
Firmware Version: 507KC4
User Capacity:    120,034,123,776 bytes [120 GB]
Sector Size:      512 bytes logical/physical
Rotation Rate:    Solid State Device
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   ATA8-ACS, ACS-2 T13/2015-D revision 3
SATA Version is:  SATA 3.0, 6.0 Gb/s (current: 3.0 Gb/s)
Local Time is:    Thu Feb 23 14:49:17 2017 CST

Seagate 4TB NAS:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x000f   117   100   006    Pre-fail  Always       -       154799880
  3 Spin_Up_Time            0x0003   093   092   000    Pre-fail  Always       -       0
  4 Start_Stop_Count        0x0032   100   100   020    Old_age   Always       -       287
  5 Reallocated_Sector_Ct   0x0033   100   100   010    Pre-fail  Always       -       0
  7 Seek_Error_Rate         0x000f   066   060   030    Pre-fail  Always       -       4105125
  9 Power_On_Hours          0x0032   096   096   000    Old_age   Always       -       3560
 10 Spin_Retry_Count        0x0013   100   100   097    Pre-fail  Always       -       0
 12 Power_Cycle_Count       0x0032   100   100   020    Old_age   Always       -       14
184 End-to-End_Error        0x0032   100   100   099    Old_age   Always       -       0
187 Reported_Uncorrect      0x0032   100   100   000    Old_age   Always       -       0
188 Command_Timeout         0x0032   100   100   000    Old_age   Always       -       2
189 High_Fly_Writes         0x003a   100   100   000    Old_age   Always       -       0
190 Airflow_Temperature_Cel 0x0022   076   062   045    Old_age   Always       -       24 (Min/Max 22/34)
191 G-Sense_Error_Rate      0x0032   100   100   000    Old_age   Always       -       0
192 Power-Off_Retract_Count 0x0032   100   100   000    Old_age   Always       -       9
193 Load_Cycle_Count        0x0032   100   100   000    Old_age   Always       -       287
194 Temperature_Celsius     0x0022   024   040   000    Old_age   Always       -       24 (0 21 0 0 0)
197 Current_Pending_Sector  0x0012   100   100   000    Old_age   Always       -       0
198 Offline_Uncorrectable   0x0010   100   100   000    Old_age   Offline      -       0
199 UDMA_CRC_Error_Count    0x003e   200   197   000    Old_age   Always       -       423

SSD:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x000f   120   120   050    Pre-fail  Always       -       0/0
  5 Retired_Block_Count     0x0033   100   100   003    Pre-fail  Always       -       0
  9 Power_On_Hours_and_Msec 0x0032   098   098   000    Old_age   Always       -       2411h+06m+30.610s
 12 Power_Cycle_Count       0x0032   099   099   000    Old_age   Always       -       1052
171 Program_Fail_Count      0x0032   000   000   000    Old_age   Always       -       0
172 Erase_Fail_Count        0x0032   000   000   000    Old_age   Always       -       0
174 Unexpect_Power_Loss_Ct  0x0030   000   000   000    Old_age   Offline      -       56
177 Wear_Range_Delta        0x0000   000   000   000    Old_age   Offline      -       2
181 Program_Fail_Count      0x0032   000   000   000    Old_age   Always       -       0
182 Erase_Fail_Count        0x0032   000   000   000    Old_age   Always       -       0
187 Reported_Uncorrect      0x0032   100   100   000    Old_age   Always       -       0
189 Airflow_Temperature_Cel 0x0000   024   042   000    Old_age   Offline      -       24 (Min/Max 18/42)
194 Temperature_Celsius     0x0022   024   042   000    Old_age   Always       -       24 (Min/Max 18/42)
195 ECC_Uncorr_Error_Count  0x001c   100   100   000    Old_age   Offline      -       0/0
196 Reallocated_Event_Count 0x0033   100   100   003    Pre-fail  Always       -       0
201 Unc_Soft_Read_Err_Rate  0x001c   100   100   000    Old_age   Offline      -       0/0
204 Soft_ECC_Correct_Rate   0x001c   100   100   000    Old_age   Offline      -       0/0
230 Life_Curve_Status       0x0013   100   100   000    Pre-fail  Always       -       100
231 SSD_Life_Left           0x0013   100   100   010    Pre-fail  Always       -       0
233 SandForce_Internal      0x0000   000   000   000    Old_age   Offline      -       2087
234 SandForce_Internal      0x0032   000   000   000    Old_age   Always       -       1934
241 Lifetime_Writes_GiB     0x0032   000   000   000    Old_age   Always       -       1934
242 Lifetime_Reads_GiB      0x0032   000   000   000    Old_age   Always       -       2876
