TECHNOLOGY
- Dokuwiki
- Miscellaneous
This script reads the status of the hard disks on my system (defined in array1). It looks for the word “PASSED” in the output of each run of the smartctl command, and reports a success/fail condition accordingly.
#! /bin/bash declare -a array1 array1=( /dev/hda /dev/hdc /dev/hdd ) outfile=/root/scripts/smartmsg.txt rm $outfile problemflag=0 date >> $outfile # -------------------------------- # check disks for "PASSED" message # -------------------------------- for element in ${array1[@]} do OUTPUT=`smartctl -H $element | grep PASSED | wc -l` if [ $OUTPUT -eq 0 ] ; then echo "===============================================" >> $outfile echo "Problem with $element on `hostname`" >> $outfile echo "===============================================" >> $outfile /usr/sbin/smartctl -a $element >> $outfile problemflag=1 else echo Disc $element is ok. >> $outfile fi done # -------------------------------- # send good or bad email # -------------------------------- runstatus=null if [ $problemflag -eq 0 ] ; then runstatus=NOMINAL else runstatus=PROBLEM fi /usr/bin/mail -s "`hostname`: $runstatus" my@emailaddress.com < $outfile
The script writes a temporary file called smartstatus.txt in the same directory where it lives. Yes, it would be a good idea to move the temp file into the /tmp folder. Feel free to do that.