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: 176805 - Today Page Visits: 212