mirror of https://github.com/sipwise/collectd.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
49 lines
1.7 KiB
49 lines
1.7 KiB
#!/bin/bash
|
|
|
|
# Sample script for the exec plugin (collectd-exec(5))
|
|
#
|
|
# This script uses smartctl(8) to read HDD temperatures. The drives are
|
|
# attached to a 3ware RAID controller which hddtempd can't handle.
|
|
# Unfortunately the smartmontools don't have a library so we can't write a
|
|
# C-plugin, at least not easily.
|
|
# Please note that only root can read the SMART attributes from harddrives,
|
|
# because special ``capabilities'' are necessary. However, the exec plugin will
|
|
# refuse to run scripts as root, which is why `sudo' is used here for
|
|
# fine-grained root privileges for the user `smart'. This isn't as straigt
|
|
# forward as one might hope, but we think that the gained security is worth it.
|
|
|
|
# The sudo configuration looks something like this:
|
|
# -- 8< --
|
|
# Cmnd_Alias SMARTCTL = /usr/sbin/smartctl -d 3ware\,0 -A /dev/twe0, /usr/sbin/smartctl -d 3ware\,1 -A /dev/twe0, /usr/sbin/smartctl -d ata -A /dev/sda
|
|
# smart ALL = (root) NOPASSWD: SMARTCTL
|
|
# -- >8 --
|
|
|
|
HOST="huhu"
|
|
INTERVAL=60
|
|
|
|
while true
|
|
do
|
|
TEMP=$((sudo smartctl -d 3ware,0 -A /dev/twe0 | grep Temperature_Celsius | awk '{ print $10; }') 2>/dev/null);
|
|
if [ $? -ne 0 ]
|
|
then
|
|
TEMP="U"
|
|
fi
|
|
echo "$HOST/exec-smart/temperature-3ware_0 interval=$INTERVAL N:$TEMP"
|
|
|
|
TEMP=$((sudo smartctl -d 3ware,1 -A /dev/twe0 | grep Temperature_Celsius | awk '{ print $10; }') 2>/dev/null);
|
|
if [ $? -ne 0 ]
|
|
then
|
|
TEMP="U"
|
|
fi
|
|
echo "$HOST/exec-smart/temperature-3ware_1 interval=$INTERVAL N:$TEMP"
|
|
|
|
TEMP=$((sudo smartctl -d ata -A /dev/sda | grep Temperature_Celsius | awk '{ print $10; }') 2>/dev/null);
|
|
if [ $? -ne 0 ]
|
|
then
|
|
TEMP="U"
|
|
fi
|
|
echo "$HOST/exec-smart/temperature-sata_0 interval=$INTERVAL N:$TEMP"
|
|
|
|
sleep $INTERVAL
|
|
done
|