aboutsummaryrefslogtreecommitdiff
path: root/temperatures.sh
diff options
context:
space:
mode:
Diffstat (limited to 'temperatures.sh')
-rwxr-xr-xtemperatures.sh29
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