Sure. Here are the two scripts I use to take drive temp and also to see if the disk is spun up.
You're going to need curl for this to work. This is for drive temp. Replace DBURL with your influx IP address. And replace DISK_ARRAY and DESCRIPTION with your drives.
#!/usr/bin/bash
DBURL=http://192.168.X.X:8086
DBNAME=telegraf
DEVICE="UNRAID"
CURDATE=`date +%s`
# Todo: Need to parse /var/local/emhttp/disks.ini in the future
DISK_ARRAY=( sdl sdj sdz sdy sdu sdx sdv sdw sdt sdad sdaa sdab sdac sdag sds sdae sdc sdg sdk sdf sdaf sdn sde sdm sdh sdi sdd sdp sdq sdr )
DESCRIPTION=( Parity1 Parity2 Disk1 Disk2 Disk3 Disk4 Disk5 Disk6 Disk7 Disk8 Disk9 Disk10 Disk11 Disk12 Disk13 Disk14 Disk15 Disk16 Disk17 Disk18 Disk19 Disk20 Disk21 Disk22 Disk23 Disk24 Disk25 Cache1 Cache2 Cache3 )
# Added -n standby to the check so smartctl is not spinning up my drives
#
i=0
for DISK in "${DISK_ARRAY[@]}"
do
smartctl -n standby -A /dev/$DISK | grep "Temperature_Cel" | awk '{print $10}' | while read TEMP
do
echo ${DISK} : ${TEMP}
curl -is -XPOST "$DBURL/write?db=$DBNAME" --data-binary "DiskTempStats,DEVICE=${DEVICE},DISK=${DESCRIPTION[$i]} Temperature=${TEMP} ${CURDATE}000000000" >/dev/null 2>&1
done
((i++))
done
This is for drive spinup:
#!/usr/bin/bash
DBURL=http://192.168.X.XX:8086
DBNAME=telegraf
DEVICE="UNRAID"
CURDATE=`date +%s`
# Todo: Need to parse /var/local/emhttp/disks.ini
DISK_ARRAY=( sdl sdj sdz sdy sdu sdx sdv sdw sdt sdad sdaa sdab sdac sdag sds sdae sdc sdg sdk sdf sdaf sdn sde sdm sdh sdi sdd sdp sdq sdr )
DESCRIPTION=( Parity1 Parity2 Disk1 Disk2 Disk3 Disk4 Disk5 Disk6 Disk7 Disk8 Disk9 Disk10 Disk11 Disk12 Disk13 Disk14 Disk15 Disk16 Disk17 Disk18 Disk19 Disk20 Disk21 Disk22 Disk23 Disk24 Disk25 Cache1 Cache2 Cache3 )
i=0
for DISK in "${DISK_ARRAY[@]}"
do
hdparm -C /dev/$DISK | grep 'state' | awk '{print $4}' | while read STATUS
do
echo ${DISK} : ${STATUS} : ${DESCRIPTION[$i]}
if [ ${STATUS} = "standby" ]
then
curl -is -XPOST "$DBURL/write?db=$DBNAME" --data-binary "diskStatus,DEVICE=${DEVICE},DISK=${DESCRIPTION[$i]} Active=0 ${CURDATE}000000000" >/dev/null 2>&1
else
curl -is -XPOST "$DBURL/write?db=$DBNAME" --data-binary "diskStatus,DEVICE=${DEVICE},DISK=${DESCRIPTION[$i]} Active=1 ${CURDATE}000000000" >/dev/null 2>&1
fi
done
((i++))
done