#!/bin/bash
#
# Copyright (c) 2003-2004 Fredrik Ohrn. All Rights Reserved.
#
# See the included COPYING file for license details.
#
# Edit the variables
hostname=$HOSTNAME
ipmi_cmd="/usr/local/bin/ipmitool -I open"
rrd_dir="/some/dir/rrd"
# Full path to the rrdcgi executable.
rrdcgi=/usr/local/bin/rrdcgi
# Where should rrdcgi store the graphs? This path must be within the
# document root and writable by the webserver user.
img_dir=/usr/local/apache2/htdocs/images/graphs
# Where will the graphs show up on the webserver?
web_dir=/images/graphs
# Size of graph area (excluding title, legends etc.)
graph_width=500
graph_height=150
# Graphs to include on page
graph_daily=1
graph_weekly=1
graph_monthly=0
# No need to edit below this point.
color[0]="2020FF"
color[1]="20FF20"
color[2]="FF2020"
color[3]="FF21FF"
color[4]="21FFFF"
color[5]="FFFF21"
color[6]="8F21FF"
color[7]="21FF8F"
color[8]="FF8F21"
color[9]="FF2190"
color[10]="2190FF"
color[11]="90FF21"
cat << EOF
#!$rrdcgi
$hostname
$hostname
EOF
IFS="
"
i=0
groups=
for line in `eval $ipmi_cmd -c -v sdr list full` ; do
IFS=,
split=($line)
file="$rrd_dir/$hostname-${split[0]}.rrd"
group=`echo "${split[2]} ${split[*]:10:6}" | tr ' .-' ___`
group_color=${group}_color
if [ -z "${!group}" ] ; then
groups="$groups $group"
declare $group_color=0
group_unit=${group}_unit
declare $group_unit="${split[2]}"
group_title=${group}_title
declare $group_title="${split[5]} / ${split[6]}"
group_thres=${group}_thres
declare $group_thres="${split[10]},${split[11]},${split[12]},${split[13]},${split[14]},${split[15]}"
fi
declare $group="${!group}
DEF:var$i=\"$file\":var:AVERAGE LINE1:var$i#${color[${!group_color}]}:\"${split[0]}\""
declare $group_color=$[ ${!group_color} + 1 ]
c=$[ c + 1 ]
i=$[ i + 1 ]
done
IFS=" "
for group in $groups ; do
group_unit=${group}_unit
group_title=${group}_title
group_thres=${group}_thres
IFS=,
split=(${!group_thres})
thres=
if [ -n "${split[0]}" ] ; then
if [ -n "${split[3]}" ] ; then
thres="
HRULE:${split[0]}#000000
HRULE:${split[3]}#000000:\"Upper & lower non-recoverable thresholds\""
else
thres="
HRULE:${split[0]}#000000:\"Upper non-recoverable threshold\""
fi
else
if [ -n "${split[3]}" ] ; then
thres="
HRULE:${split[3]}#000000:\"Lower non-recoverable threshold\""
fi
fi
if [ -n "${split[1]}" ] ; then
if [ -n "${split[4]}" ] ; then
thres="$thres
HRULE:${split[1]}#FF0000
HRULE:${split[4]}#FF0000:\"Upper & lower critical thresholds\""
else
thres="$thres
HRULE:${split[1]}#FF0000:\"Upper critical threshold\""
fi
else
if [ -n "${split[4]}" ] ; then
thres="$thres
HRULE:${split[4]}#FF0000:\"Lower critical threshold\""
fi
fi
if [ -n "${split[2]}" ] ; then
if [ -n "${split[5]}" ] ; then
thres="$thres
HRULE:${split[2]}#FFCC00
HRULE:${split[5]}#FFCC00:\"Upper & lower warning thresholds\""
else
thres="$thres
HRULE:${split[2]}#FFCC00:\"Upper warning threshold\""
fi
else
if [ -n "${split[5]}" ] ; then
thres="$thres
HRULE:${split[5]}#FFCC00:\"Lower warning threshold\""
fi
fi
echo "${!group_title}
"
if [ "$graph_daily" -ne 0 ] ; then
cat << EOF
"
--lazy
--vertical-label "${!group_unit}"
--title "Daily graph"
--height $graph_height
--width $graph_width ${!group} $thres
>
EOF
fi
if [ "$graph_weekly" -ne 0 ] ; then
cat << EOF
"
--lazy
--start -7d
--vertical-label "${!group_unit}"
--title "Weelky graph"
--height $graph_height
--width $graph_width ${!group} $thres
>
EOF
fi
if [ "$graph_monthly" -ne 0 ] ; then
cat << EOF
"
--lazy
--start -30d
--vertical-label "${!group_unit}"
--title "Monthly graph"
--height $graph_height
--width $graph_width ${!group} $thres
>
EOF
fi
done
cat << EOF
EOF