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