#!/usr/bin/perl use lib ".."; use SNMPstat; use CGI; #use Data::Dumper; use strict; my $cgi=new CGI; print $cgi->header(); print "<HTML><BODY BGCOLOR=white>"; my $arrref; my $hashref; # # Output Load Averages # eval { $arrref = SNMPstat->getLoadStats(); }; if($@) { print "$@<BR>"; } else { #print Data::Dumper->Dump($arrref); print<<"HTML"; <TABLE BORDER=1 WIDTH=50%> <TR><TH COLSPAN=3>Load Averages</TH></TR> <TR><TH>Duration</TH><TH>Average</TH><TH>Warning Limit</TH></TR> HTML print "<TR><TH>1 min</TH><TD>", $$arrref[1]->{"load.Load"}, "</TD>"; print "<TD>", $$arrref[1]->{"load.RedLimit"}, "</TD></TR>"; print "<TR><TH>5 min</TH><TD>", $$arrref[2]->{"load.Load"}, "</TD>"; print "<TD>", $$arrref[2]->{"load.RedLimit"}, "</TD></TR>"; print "<TR><TH>15 min</TH><TD>", $$arrref[3]->{"load.Load"}, "</TD>"; print "<TD>", $$arrref[3]->{"load.RedLimit"}, "</TD></TR>"; } # # Output Memory Info # eval { $hashref = SNMPstat->getMemStats(); }; if($@) { print "$@<BR>"; } else { print<<"HTML"; </TABLE><P><TABLE BORDER=1 WIDTH=50%> <TR><TH COLSPAN=5>System Memory</TH></TR> <TR><TH COLSPAN=2>Swap Space</TH><TH COLSPAN=2>RAM</TH><TH>Free</TH></TR> <TH ALIGN=LEFT>Total</TH> <TH ALIGN=LEFT>Avail</TH> <TH ALIGN=LEFT>Total</TH> <TH ALIGN=LEFT>Avail</TH> <TH ALIGN=LEFT>Total</TH> </TR> HTML print "<TD>", &KBformat($$hashref{"mem.TotalSwap"}), "</TD>"; print "<TD>", &KBformat($$hashref{"mem.AvailSwap"}), "</TD>"; print "<TD>", &KBformat($$hashref{"mem.TotalReal"}), "</TD>"; print "<TD>", &KBformat($$hashref{"mem.AvailReal"}), "</TD>"; print "<TD>", &KBformat($$hashref{"mem.TotalFree"}), "</TD>"; print "</TR></TABLE>"; } # # Output Process Info # eval { $arrref = SNMPstat->getProcStats(); }; if($@) { print "$@<BR>"; } else { print<<"HTML"; <P><TABLE BORDER=1 WIDTH=50%> <TR><TH COLSPAN=4>Watched Processes</TH></TR> <TR><TH>Name</TH><TH>Count</TH><TH>Min</TH><TH>Max</TH></TR> HTML foreach my $i (1 .. scalar(@{$arrref})-1) { print "<TR><TD>", $$arrref[$i]->{"proc.Name"}, "</TD>"; print "<TD>", $$arrref[$i]->{"proc.Count"}, "</TD>"; print "<TD>", $$arrref[$i]->{"proc.MinCount"}, "</TD>"; print "<TD>", $$arrref[$i]->{"proc.MaxCount"} , "</TD></TR>"; } print "</TABLE><P>"; } # # Output Disk Info # eval { $arrref = SNMPstat->getDiskStats(); }; if($@) { print "$@<BR>"; } else { print<<"HTML"; <TABLE BORDER=1 WIDTH=50%> <TR><TH COLSPAN=4>Disk Usage</TH></TR> <TR><TH>Device</TH><TH>Free Space</TH><TH>Used Space</TH><TH>Total Space</TH></TR> HTML foreach my $i (1 .. scalar(@{$arrref})-1) { print "<TR><TD>", $$arrref[$i]->{"disk.Path"}; print " (", $$arrref[$i]->{"disk.Device"}, ")</TD>"; print "<TD>", MBformat($$arrref[$i]->{"disk.Avail"}); print " (", 100 - $$arrref[$i]->{"disk.UsedPct"}, "%)</TD>"; print "<TD>", MBformat($$arrref[$i]->{"disk.Used"}); print " (", $$arrref[$i]->{"disk.UsedPct"}, "%)</TD>"; print "<TD>", &MBformat($$arrref[$i]->{"disk.Total"}) , "</TD></TR>"; } print "</TABLE><P>"; } # # Output System Info # eval { $hashref = SNMPstat->getSysInfo(); }; if($@) { print "$@<BR>"; } else { print "<DL><DT>System name</DT><DD>", $$hashref{"sysName"}, "</DD>"; print "<DT>Description</DT><DD>", $$hashref{"sysDescription"}, "</DD>"; print "<DT>Location</DT><DD>", $$hashref{"sysLocation"}, "</DD>"; print "<DT>Contact</DT><DD>", $$hashref{"sysContact"}, "</DD>"; print "<DT>Uptime</DT><DD>", &TTformat($$hashref{"sysUpTime"}), "</DD></DL>"; } print "</BODY></HTML>"; # Format TimeTicks sub TTformat { my $ticks = shift; return sprintf "%0.2f days", $ticks/8640000; } # Format to KBytes sub KBformat { my $bytes = shift; return sprintf "%d K", int($bytes/1024); } # Format to MBytes sub MBformat { my $kbytes = shift; return sprintf "%d M", int($kbytes/1024); } # Format LoadAvg sub LAformat { my $avg = shift; return sprintf "%0.2f %%", $avg*100; }