#!/bin/sh # # Plugin to monitor various statistics exported by a UPS. # # Written by Andras Korn in 2005. # Updated by Damien Broqua in 2008. # Licensed under the GPL. # # usage: ups_upsid_host_function # #%# family=contrib #%# capabilities=autoconf suggest UPS=$(basename $0 | cut -d_ -f2) HOST=$(basename $0 | cut -d_ -f3) FUNCTION=$(basename $0 | cut -d_ -f4) TITLE="graph_title "${UPS}@${HOST} if [ "$1" = "autoconf" ]; then [ -x /bin/upsc ] && [ -r /etc/nut/ups.conf ] && echo yes && exit 0 echo "no (/bin/upsc or /etc/nut/ups.conf not found)" exit 1 fi if [ "$1" = "suggest" ]; then grep "MONITOR" /etc/nut/upsmon.conf |cut -d" " -f2|sed 's/@/_/g' \ | tr -d '][' \ | while read ups; do for i in voltages freq charge current; do echo ${ups}_${i} done done fi function voltages() { if [ "$1" = "config" ]; then echo ${TITLE}" voltages" echo "graph_args --base 1000 -l 0" echo "graph_vlabel Volt" for i in battery nominal input output; do echo "${i}.label $i" echo "${i}.type GAUGE" echo "${i}.max 1000" echo "${i}.min 0" done else upsc ${UPS}@${HOST} | sed -n '/volt/{ s/:// /nominal/s/.* /nominal.value / /voltage/s/\.[^ ]*/.value/ p }' fi } function charge() { if [ "$1" = "config" ]; then echo ${TITLE}" charge" echo "graph_args --base 1000 -l 0" echo "graph_vlabel %" for i in charge low load; do echo "${i}.label $i" echo "${i}.type GAUGE" echo "${i}.max 100" echo "${i}.min 0" done else upsc ${UPS}@${HOST} | sed -n '/charge/{ s/^[^:]*\.//g s/:/.value/ p } /load/{ s/.*:/load.value/ p }' fi } function frequency() { if [ "$1" = "config" ]; then echo ${TITLE}" input AC frequency" echo "graph_args --base 1000 -l 0" echo "graph_vlabel frequency 1/s" echo "acfreq.label AC frequency" echo "acfreq.type GAUGE" echo "acfreq.max 100" echo "acfreq.min 5" else upsc ${UPS}@${HOST} | sed -n '/freq/{s/.*:/acfreq.value/;p}' fi } function current() { if [ "$1" = "config" ]; then echo ${TITLE}" output current" echo "graph_args --base 1000 -l 0" echo "graph_vlabel Amper" echo "current.label out-current" echo "current.type GAUGE" echo "current.max 100" echo "current.min 0" else upsc ${UPS} | sed -n '/current/{s/.*:/current.value/;p}' fi } [ "$1" = "config" ] && echo "graph_category sensors" case "$FUNCTION" in voltages) voltages $1 ;; charge) charge $1 ;; freq) frequency $1 ;; current) current $1 ;; *) echo "Usage: ups_upsid_upshost_function" ;; esac