diff options
Diffstat (limited to 'temperatures.sh')
| -rwxr-xr-x | temperatures.sh | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/temperatures.sh b/temperatures.sh new file mode 100755 index 0000000..48a4d55 --- /dev/null +++ b/temperatures.sh @@ -0,0 +1,29 @@ +#!/bin/sh + +PATH= +SLEEP=/bin/sleep +DOAS=/usr/local/bin/doas +AWK=/usr/bin/awk +SYSCTL=/sbin/sysctl +SMARTCTL=/usr/local/sbin/smartctl + +HOSTNAME="${COLLECTD_HOSTNAME:-localhost}" +INTERVAL="${COLLECTD_INTERVAL:-120}" + +AWKOPTS="-v interval=${INTERVAL} -v host=${HOSTNAME}" + +while true; do + + $SYSCTL -e dev.cpu \ + | $AWK ${AWKOPTS} -F '[.=]' '/temperature/ {printf "PUTVAL %s/thermal/temperature-cpu%s interval=%s N:%d\n", host, $3, interval, int($5)}' + + $SYSCTL -e hw.acpi.thermal \ + | $AWK ${AWKOPTS} -F "[.=]" '/temperature/ {printf "PUTVAL %s/thermal/temperature-%s interval=%s N:%d\n", host, $4, interval, int($6)}' + + for i in $($SYSCTL -n kern.disks | $AWK '{for (i=NF; i!=0 ; i--) if(match($i, '/ada/')) print $i }' ); do + $DOAS $SMARTCTL -a -n standby /dev/$i \ + | $AWK ${AWKOPTS} -v disk=$i '/Temperature_Celsius/ {printf "PUTVAL %s/thermal/temperature-%s interval=%s N:%s\n", host, disk, interval, $10}' + done + + $SLEEP $INTERVAL +done |
