This is a little how to. Its periodically in cron checking temperature of internal hard-disk and in some condition make an alert by mail.
So, as always, install some useful packages:
yum install epel-release.noarch
yum install htop dstat lm_sensors.x86_64 hddtemp
First, we must check, which disk we have inside. We use only paragraph without numbers:
ls -lah /dev/sd*
----------------
brw-rw---- 1 root disk 8, 0 Dec 1 07:20 /dev/sda
brw-rw---- 1 root disk 8, 1 Dec 1 07:20 /dev/sda1
brw-rw---- 1 root disk 8, 16 Dec 1 07:20 /dev/sdb
brw-rw---- 1 root disk 8, 17 Dec 1 07:20 /dev/sdb1
brw-rw---- 1 root disk 8, 32 Dec 1 07:20 /dev/sdc
brw-rw---- 1 root disk 8, 33 Dec 1 07:20 /dev/sdc1
brw-rw---- 1 root disk 8, 48 Dec 1 07:20 /dev/sdd
brw-rw---- 1 root disk 8, 49 Dec 1 07:20 /dev/sdd1
brw-rw---- 1 root disk 8, 64 Dec 1 07:20 /dev/sde
brw-rw---- 1 root disk 8, 65 Dec 1 07:20 /dev/sde1
brw-rw---- 1 root disk 8, 80 Dec 1 07:20 /dev/sdf
brw-rw---- 1 root disk 8, 81 Dec 1 07:20 /dev/sdf1
-----------------
we user only:
/dev/sda, /dev/sdb, /dev/sdc, /dev/sdd, /dev/sde, /dev/sdf
Create a folder, maybe like this:
mkdir /root/hddtemp
Create a script to check this temperatures, end some conditions:
#! /bin/bash
#written by vasil
HDDS="/dev/sda /dev/sdb /dev/sdc /dev/sdd /dev/sde /dev/sdf"
HDT=/usr/sbin/hddtemp
mail="/root/hddtemp/messagebody.txt" #file for messasege by mail
LOG=/root/hddtemp/hddtemp.log #log file
ALERT_LEVEL=48 #temperature treshold
date >> $LOG
echo "Subject: "WARNING - name-of-server - temperature of hdds is high"" > $mail
echo " " >> $mail
date >> $mail
m=0
for disk in $HDDS
do
HDTEMP=$($HDT $disk | awk -F ":" '{ print $3}' | awk -F "°" '{print $1}')
if [ $HDTEMP -ge $ALERT_LEVEL ];
then
echo "Temperature of disk $disk is higher then limit $ALERT_LEVEL celsius" >> $LOG
echo "Temperature of disk $disk is higher then limit $ALERT_LEVEL celsius" >> $mail
$HDT $disk >> $LOG
$HDT $disk >> $mail
echo " " >> $LOG
echo " " >> $mail
m=1
else
echo "Temperature of disk $disk Is normal: $HDTEMP celsius" >> $LOG
echo "Temperature of disk $disk Is normal: $HDTEMP celsius" >> $mail
fi
done
if [ "$m" -ne "0" ];
then
sh /root/hddtemp/send_mail_script.sh
else
echo
fi
echo "end of script...." >> $LOG
echo " " >> $LOG
exit 0
Next, we must create a script, to send mail to us, if we have a mail server in local network with allowed port 25:
vim /root/hddtemp/send_mail_script.sh
#!/bin/bash
#written by vasil
#
#if there is an error in syntax "sendmail", configure /etc/ssmtp/ssmtp.conf
#
# subject of email
SUBJECT="WARNING - name-of-server - temperature of hdds is high"
# destination
EMAIL="vasil@gonscak.sk"
# Email body
EMAILMESSAGE=/root/hddtemp/messagebody.txt
# send message using /bin/mail
#sendmail $EMAIL < $EMAILMESSAGE
/usr/bin/mail -s "$SUBJECT" $EMAIL < $EMAILMESSAGE
Now, we can test the above scripts. Maybe we must add +x permissions:
sh -x /root/hddtemp/hddtemp.sh
------------------------------
+ HDDS=/dev/sda /dev/sdb /dev/sdc /dev/sdd /dev/sde /dev/sdf
+ HDT=/usr/sbin/hddtemp
+ mail=/root/hddtemp/messagebody.txt
+ LOG=/root/hddtemp/hddtemp.log
+ ALERT_LEVEL=28
+ date
+ echo Subject: WARNING - name-of-server - temperature of hdds is high
+ echo
+ date
+ m=0
+ /usr/sbin/hddtemp /dev/sda
+ awk -F : { print $3}
+ awk -F ° {print $1}
+ HDTEMP= 38
+ [ 38 -ge 28 ]
+ echo Temperature of disk /dev/sda is higher then limit 28 celsius
+ echo Temperature of disk /dev/sda is higher then limit 28 celsius
+ /usr/sbin/hddtemp /dev/sda
+ /usr/sbin/hddtemp /dev/sda
+ echo
+ echo
+ m=1
+ /usr/sbin/hddtemp /dev/sdb
+ awk -F : { print $3}
+ awk -F ° {print $1}
+ HDTEMP= 35
+ [ 35 -ge 28 ]
+ echo Temperature of disk /dev/sdb is higher then limit 28 celsius
+ echo Temperature of disk /dev/sdb is higher then limit 28 celsius
+ /usr/sbin/hddtemp /dev/sdb
...
...
...
+ m=1
+ [ 1 -ne 0 ]
+ sh /root/hddtemp/send_mail_script.sh
+ echo end of script....
+ echo
+ exit 0
And then, we have a mail:
Subject: WARNING - name-of-server - temperature of hdds is high
Thu Jan 26 11:52:20 CET 2017
Temperature of disk /dev/sda is higher then limit 28 celsius
/dev/sda: TOSHIBA DT01ACA100: 37°C
Temperature of disk /dev/sdb is higher then limit 28 celsius
/dev/sdb: ST3500418AS: 35°C
....
Total Page Visits: 176785 - Today Page Visits: 192