1*c18ec02fSPetter Reinholdtsen#!/bin/bash
2*c18ec02fSPetter Reinholdtsen#
3*c18ec02fSPetter Reinholdtsen#  Copyright (c) 2003-2004 Fredrik Ohrn.  All Rights Reserved.
4*c18ec02fSPetter Reinholdtsen#
5*c18ec02fSPetter Reinholdtsen#  See the included COPYING file for license details.
6*c18ec02fSPetter Reinholdtsen#
7*c18ec02fSPetter Reinholdtsen
8*c18ec02fSPetter Reinholdtsen# Edit the variables
9*c18ec02fSPetter Reinholdtsen
10*c18ec02fSPetter Reinholdtsenhostname=$HOSTNAME
11*c18ec02fSPetter Reinholdtsen
12*c18ec02fSPetter Reinholdtsenipmi_cmd="/usr/local/bin/ipmitool -I open"
13*c18ec02fSPetter Reinholdtsenrrd_dir="/some/dir/rrd"
14*c18ec02fSPetter Reinholdtsen
15*c18ec02fSPetter Reinholdtsen# Full path to the rrdcgi executable.
16*c18ec02fSPetter Reinholdtsenrrdcgi=/usr/local/bin/rrdcgi
17*c18ec02fSPetter Reinholdtsen
18*c18ec02fSPetter Reinholdtsen# Where should rrdcgi store the graphs? This path must be within the
19*c18ec02fSPetter Reinholdtsen# document root and writable by the webserver user.
20*c18ec02fSPetter Reinholdtsenimg_dir=/usr/local/apache2/htdocs/images/graphs
21*c18ec02fSPetter Reinholdtsen
22*c18ec02fSPetter Reinholdtsen# Where will the graphs show up on the webserver?
23*c18ec02fSPetter Reinholdtsenweb_dir=/images/graphs
24*c18ec02fSPetter Reinholdtsen
25*c18ec02fSPetter Reinholdtsen# Size of graph area (excluding title, legends etc.)
26*c18ec02fSPetter Reinholdtsengraph_width=500
27*c18ec02fSPetter Reinholdtsengraph_height=150
28*c18ec02fSPetter Reinholdtsen
29*c18ec02fSPetter Reinholdtsen# Graphs to include on page
30*c18ec02fSPetter Reinholdtsengraph_daily=1
31*c18ec02fSPetter Reinholdtsengraph_weekly=1
32*c18ec02fSPetter Reinholdtsengraph_monthly=0
33*c18ec02fSPetter Reinholdtsen
34*c18ec02fSPetter Reinholdtsen
35*c18ec02fSPetter Reinholdtsen# No need to edit below this point.
36*c18ec02fSPetter Reinholdtsen
37*c18ec02fSPetter Reinholdtsencolor[0]="2020FF"
38*c18ec02fSPetter Reinholdtsencolor[1]="20FF20"
39*c18ec02fSPetter Reinholdtsencolor[2]="FF2020"
40*c18ec02fSPetter Reinholdtsencolor[3]="FF21FF"
41*c18ec02fSPetter Reinholdtsencolor[4]="21FFFF"
42*c18ec02fSPetter Reinholdtsencolor[5]="FFFF21"
43*c18ec02fSPetter Reinholdtsencolor[6]="8F21FF"
44*c18ec02fSPetter Reinholdtsencolor[7]="21FF8F"
45*c18ec02fSPetter Reinholdtsencolor[8]="FF8F21"
46*c18ec02fSPetter Reinholdtsencolor[9]="FF2190"
47*c18ec02fSPetter Reinholdtsencolor[10]="2190FF"
48*c18ec02fSPetter Reinholdtsencolor[11]="90FF21"
49*c18ec02fSPetter Reinholdtsen
50*c18ec02fSPetter Reinholdtsencat << EOF
51*c18ec02fSPetter Reinholdtsen#!$rrdcgi
52*c18ec02fSPetter Reinholdtsen<html>
53*c18ec02fSPetter Reinholdtsen<head>
54*c18ec02fSPetter Reinholdtsen<title>$hostname</title>
55*c18ec02fSPetter Reinholdtsen<RRD::GOODFOR 300>
56*c18ec02fSPetter Reinholdtsen<body>
57*c18ec02fSPetter Reinholdtsen<h2>$hostname</h2>
58*c18ec02fSPetter ReinholdtsenEOF
59*c18ec02fSPetter Reinholdtsen
60*c18ec02fSPetter Reinholdtsen
61*c18ec02fSPetter ReinholdtsenIFS="
62*c18ec02fSPetter Reinholdtsen"
63*c18ec02fSPetter Reinholdtsen
64*c18ec02fSPetter Reinholdtseni=0
65*c18ec02fSPetter Reinholdtsengroups=
66*c18ec02fSPetter Reinholdtsen
67*c18ec02fSPetter Reinholdtsenfor line in `eval $ipmi_cmd -c -v sdr list full` ; do
68*c18ec02fSPetter Reinholdtsen
69*c18ec02fSPetter Reinholdtsen	IFS=,
70*c18ec02fSPetter Reinholdtsen
71*c18ec02fSPetter Reinholdtsen	split=($line)
72*c18ec02fSPetter Reinholdtsen
73*c18ec02fSPetter Reinholdtsen	file="$rrd_dir/$hostname-${split[0]}.rrd"
74*c18ec02fSPetter Reinholdtsen	group=`echo "${split[2]}" | tr ' .-' ___`
75*c18ec02fSPetter Reinholdtsen
76*c18ec02fSPetter Reinholdtsen	group_color=${group}_color
77*c18ec02fSPetter Reinholdtsen
78*c18ec02fSPetter Reinholdtsen	if [ -z "${!group}" ] ; then
79*c18ec02fSPetter Reinholdtsen		groups="$groups $group"
80*c18ec02fSPetter Reinholdtsen
81*c18ec02fSPetter Reinholdtsen		declare $group_color=0
82*c18ec02fSPetter Reinholdtsen
83*c18ec02fSPetter Reinholdtsen		group_unit=${group}_unit
84*c18ec02fSPetter Reinholdtsen		declare $group_unit="${split[2]}"
85*c18ec02fSPetter Reinholdtsen	fi
86*c18ec02fSPetter Reinholdtsen
87*c18ec02fSPetter Reinholdtsen	declare $group="${!group}
88*c18ec02fSPetter Reinholdtsen  DEF:var$i=\"$file\":var:AVERAGE LINE1:var$i#${color[${!group_color}]}:\"${split[0]}\""
89*c18ec02fSPetter Reinholdtsen
90*c18ec02fSPetter Reinholdtsen	declare $group_color=$[ ${!group_color} + 1 ]
91*c18ec02fSPetter Reinholdtsen
92*c18ec02fSPetter Reinholdtsen	c=$[ c + 1 ]
93*c18ec02fSPetter Reinholdtsen	i=$[ i + 1 ]
94*c18ec02fSPetter Reinholdtsendone
95*c18ec02fSPetter Reinholdtsen
96*c18ec02fSPetter ReinholdtsenIFS=" "
97*c18ec02fSPetter Reinholdtsen
98*c18ec02fSPetter Reinholdtsenfor group in $groups ; do
99*c18ec02fSPetter Reinholdtsen
100*c18ec02fSPetter Reinholdtsen	group_unit=${group}_unit
101*c18ec02fSPetter Reinholdtsen
102*c18ec02fSPetter Reinholdtsen	IFS=,
103*c18ec02fSPetter Reinholdtsen
104*c18ec02fSPetter Reinholdtsen	echo "<h3>${!group_unit}</h3>"
105*c18ec02fSPetter Reinholdtsen
106*c18ec02fSPetter Reinholdtsen	if [ "$graph_daily" -ne 0 ] ; then
107*c18ec02fSPetter Reinholdtsen		cat << EOF
108*c18ec02fSPetter Reinholdtsen<RRD::GRAPH "$img_dir/$hostname-$group-daily.gif"
109*c18ec02fSPetter Reinholdtsen  --imginfo "<img src="$web_dir/%s" width="%lu" height="%lu">"
110*c18ec02fSPetter Reinholdtsen  --lazy
111*c18ec02fSPetter Reinholdtsen  --vertical-label "${!group_unit}"
112*c18ec02fSPetter Reinholdtsen  --title "Daily graph"
113*c18ec02fSPetter Reinholdtsen  --height $graph_height
114*c18ec02fSPetter Reinholdtsen  --width $graph_width ${!group}
115*c18ec02fSPetter Reinholdtsen>
116*c18ec02fSPetter ReinholdtsenEOF
117*c18ec02fSPetter Reinholdtsen	fi
118*c18ec02fSPetter Reinholdtsen
119*c18ec02fSPetter Reinholdtsen	if [ "$graph_weekly" -ne 0 ] ; then
120*c18ec02fSPetter Reinholdtsen		cat << EOF
121*c18ec02fSPetter Reinholdtsen<RRD::GRAPH "$img_dir/$hostname-$group-weekly.gif"
122*c18ec02fSPetter Reinholdtsen  --imginfo "<img src="$web_dir/%s" width="%lu" height="%lu">"
123*c18ec02fSPetter Reinholdtsen  --lazy
124*c18ec02fSPetter Reinholdtsen  --start -7d
125*c18ec02fSPetter Reinholdtsen  --vertical-label "${!group_unit}"
126*c18ec02fSPetter Reinholdtsen  --title "Weelky graph"
127*c18ec02fSPetter Reinholdtsen  --height $graph_height
128*c18ec02fSPetter Reinholdtsen  --width $graph_width ${!group}
129*c18ec02fSPetter Reinholdtsen>
130*c18ec02fSPetter ReinholdtsenEOF
131*c18ec02fSPetter Reinholdtsen	fi
132*c18ec02fSPetter Reinholdtsen
133*c18ec02fSPetter Reinholdtsen	if [ "$graph_monthly" -ne 0 ] ; then
134*c18ec02fSPetter Reinholdtsen		cat << EOF
135*c18ec02fSPetter Reinholdtsen<RRD::GRAPH "$img_dir/$hostname-$group-monthly.gif"
136*c18ec02fSPetter Reinholdtsen  --imginfo "<img src="$web_dir/%s" width="%lu" height="%lu">"
137*c18ec02fSPetter Reinholdtsen  --lazy
138*c18ec02fSPetter Reinholdtsen  --start -30d
139*c18ec02fSPetter Reinholdtsen  --vertical-label "${!group_unit}"
140*c18ec02fSPetter Reinholdtsen  --title "Monthly graph"
141*c18ec02fSPetter Reinholdtsen  --height $graph_height
142*c18ec02fSPetter Reinholdtsen  --width $graph_width ${!group}
143*c18ec02fSPetter Reinholdtsen>
144*c18ec02fSPetter ReinholdtsenEOF
145*c18ec02fSPetter Reinholdtsen	fi
146*c18ec02fSPetter Reinholdtsendone
147*c18ec02fSPetter Reinholdtsen
148*c18ec02fSPetter Reinholdtsencat << EOF
149*c18ec02fSPetter Reinholdtsen</body>
150*c18ec02fSPetter Reinholdtsen</html>
151*c18ec02fSPetter ReinholdtsenEOF
152