aboutsummaryrefslogtreecommitdiff
path: root/temperatures.sh
blob: 48a4d5584bf9d144625d376e324142588cb93cb3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
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