summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 33e893d)
raw | patch | inline | side by side (parent: 33e893d)
author | Florian Forster <octo@huhu.verplant.org> | |
Mon, 15 Oct 2007 15:29:56 +0000 (17:29 +0200) | ||
committer | Florian Forster <octo@huhu.verplant.org> | |
Mon, 15 Oct 2007 15:29:56 +0000 (17:29 +0200) |
contrib/exec-smartctl | patch | blob | history |
diff --git a/contrib/exec-smartctl b/contrib/exec-smartctl
index a5d8b134f6fb22ae7f352e6b9cb4f5deaf01167c..d469816037946d34ae2daf7df5f36b91da0bfb11 100755 (executable)
--- a/contrib/exec-smartctl
+++ b/contrib/exec-smartctl
#!/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
then
TEMP="U"
fi
- echo "huhu/exec-smart/temperature-3ware_0 interval=$INTERVAL N:$TEMP"
+ 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 "huhu/exec-smart/temperature-3ware_1 interval=$INTERVAL N:$TEMP"
+ 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 "huhu/exec-smart/temperature-sata_0 interval=$INTERVAL N:$TEMP"
+ echo "$HOST/exec-smart/temperature-sata_0 interval=$INTERVAL N:$TEMP"
sleep $INTERVAL
done