diff -Nur smeserver-sysmon-6.5.old/root/etc/e-smith/web/functions/sysmon smeserver-sysmon-6.5/root/etc/e-smith/web/functions/sysmon
--- smeserver-sysmon-6.5.old/root/etc/e-smith/web/functions/sysmon 2019-12-26 22:48:57.000000000 -0500
+++ smeserver-sysmon-6.5/root/etc/e-smith/web/functions/sysmon 2019-12-26 22:52:50.287000000 -0500
@@ -336,133 +336,68 @@
$VOLTAGE_GRAPH = "-b '1000' ";
$VOLTAGE_GRAPH .= "-t 'System Sensors (Voltage)' ";
$VOLTAGE_GRAPH .= "-v 'Volts' ";
-$VOLTAGE_GRAPH .= "'DEF:minin0=$RRDDIR/$SENSORSFILE.rrd:in0:MIN' ";
-$VOLTAGE_GRAPH .= "'DEF:avgin0=$RRDDIR/$SENSORSFILE.rrd:in0:AVERAGE' ";
-$VOLTAGE_GRAPH .= "'DEF:maxin0=$RRDDIR/$SENSORSFILE.rrd:in0:MAX' ";
-$VOLTAGE_GRAPH .= "'DEF:minin1=$RRDDIR/$SENSORSFILE.rrd:in1:MIN' ";
-$VOLTAGE_GRAPH .= "'DEF:avgin1=$RRDDIR/$SENSORSFILE.rrd:in1:AVERAGE' ";
-$VOLTAGE_GRAPH .= "'DEF:maxin1=$RRDDIR/$SENSORSFILE.rrd:in1:MAX' ";
-$VOLTAGE_GRAPH .= "'DEF:minin2=$RRDDIR/$SENSORSFILE.rrd:in2:MIN' ";
-$VOLTAGE_GRAPH .= "'DEF:avgin2=$RRDDIR/$SENSORSFILE.rrd:in2:AVERAGE' ";
-$VOLTAGE_GRAPH .= "'DEF:maxin2=$RRDDIR/$SENSORSFILE.rrd:in2:MAX' ";
-$VOLTAGE_GRAPH .= "'DEF:minin3=$RRDDIR/$SENSORSFILE.rrd:in3:MIN' ";
-$VOLTAGE_GRAPH .= "'DEF:avgin3=$RRDDIR/$SENSORSFILE.rrd:in3:AVERAGE' ";
-$VOLTAGE_GRAPH .= "'DEF:maxin3=$RRDDIR/$SENSORSFILE.rrd:in3:MAX' ";
-$VOLTAGE_GRAPH .= "'DEF:minin4=$RRDDIR/$SENSORSFILE.rrd:in4:MIN' ";
-$VOLTAGE_GRAPH .= "'DEF:avgin4=$RRDDIR/$SENSORSFILE.rrd:in4:AVERAGE' ";
-$VOLTAGE_GRAPH .= "'DEF:maxin4=$RRDDIR/$SENSORSFILE.rrd:in4:MAX' ";
-$VOLTAGE_GRAPH .= "'DEF:minin5=$RRDDIR/$SENSORSFILE.rrd:in5:MIN' ";
-$VOLTAGE_GRAPH .= "'DEF:avgin5=$RRDDIR/$SENSORSFILE.rrd:in5:AVERAGE' ";
-$VOLTAGE_GRAPH .= "'DEF:maxin5=$RRDDIR/$SENSORSFILE.rrd:in5:MAX' ";
-$VOLTAGE_GRAPH .= "'DEF:minin6=$RRDDIR/$SENSORSFILE.rrd:in6:MIN' ";
-$VOLTAGE_GRAPH .= "'DEF:avgin6=$RRDDIR/$SENSORSFILE.rrd:in6:AVERAGE' ";
-$VOLTAGE_GRAPH .= "'DEF:maxin6=$RRDDIR/$SENSORSFILE.rrd:in6:MAX' ";
-$VOLTAGE_GRAPH .= "'DEF:minin7=$RRDDIR/$SENSORSFILE.rrd:in7:MIN' ";
-$VOLTAGE_GRAPH .= "'DEF:avgin7=$RRDDIR/$SENSORSFILE.rrd:in7:AVERAGE' ";
-$VOLTAGE_GRAPH .= "'DEF:maxin7=$RRDDIR/$SENSORSFILE.rrd:in7:MAX' ";
-$VOLTAGE_GRAPH .= "'DEF:minin8=$RRDDIR/$SENSORSFILE.rrd:in8:MIN' ";
-$VOLTAGE_GRAPH .= "'DEF:avgin8=$RRDDIR/$SENSORSFILE.rrd:in8:AVERAGE' ";
-$VOLTAGE_GRAPH .= "'DEF:maxin8=$RRDDIR/$SENSORSFILE.rrd:in8:MAX' ";
-$VOLTAGE_GRAPH .= "'COMMENT:Current\\tMinimum\\tAverage\\tMaximum\\tAvg\\n' ";
-$VOLTAGE_GRAPH .= "'GPRINT:avgin0:LAST:%6.2lf\\g' ";
-$VOLTAGE_GRAPH .= "'GPRINT:minin0:MIN:\\t%6.2lf\\g' ";
-$VOLTAGE_GRAPH .= "'GPRINT:avgin0:AVERAGE:\\t%6.2lf\\g' ";
-$VOLTAGE_GRAPH .= "'GPRINT:maxin0:MAX:\\t%6.2lf\\g' ";
-$VOLTAGE_GRAPH .= "'COMMENT:\\t\\g' ";
-$VOLTAGE_GRAPH .= "'LINE2:avgin0#CC0099:\\tVoltage 0 (V)\\n' ";
-$VOLTAGE_GRAPH .= "'GPRINT:avgin1:LAST:%6.2lf\\g' ";
-$VOLTAGE_GRAPH .= "'GPRINT:minin1:MIN:\\t%6.2lf\\g' ";
-$VOLTAGE_GRAPH .= "'GPRINT:avgin1:AVERAGE:\\t%6.2lf\\g' ";
-$VOLTAGE_GRAPH .= "'GPRINT:maxin1:MAX:\\t%6.2lf\\g' ";
-$VOLTAGE_GRAPH .= "'COMMENT:\\t\\g' ";
-$VOLTAGE_GRAPH .= "'LINE2:avgin1#FF99CC:\\tVoltage 1 (V)\\n' ";
-$VOLTAGE_GRAPH .= "'GPRINT:avgin2:LAST:%6.2lf\\g' ";
-$VOLTAGE_GRAPH .= "'GPRINT:minin2:MIN:\\t%6.2lf\\g' ";
-$VOLTAGE_GRAPH .= "'GPRINT:avgin2:AVERAGE:\\t%6.2lf\\g' ";
-$VOLTAGE_GRAPH .= "'GPRINT:maxin2:MAX:\\t%6.2lf\\g' ";
-$VOLTAGE_GRAPH .= "'COMMENT:\\t\\g' ";
-$VOLTAGE_GRAPH .= "'LINE2:avgin2#8B4513:\\tVoltage 2 (V)\\n' ";
-$VOLTAGE_GRAPH .= "'GPRINT:avgin3:LAST:%6.2lf\\g' ";
-$VOLTAGE_GRAPH .= "'GPRINT:minin3:MIN:\\t%6.2lf\\g' ";
-$VOLTAGE_GRAPH .= "'GPRINT:avgin3:AVERAGE:\\t%6.2lf\\g' ";
-$VOLTAGE_GRAPH .= "'GPRINT:maxin3:MAX:\\t%6.2lf\\g' ";
-$VOLTAGE_GRAPH .= "'COMMENT:\\t\\g' ";
-$VOLTAGE_GRAPH .= "'LINE2:avgin3#DAA520:\\tVoltage 3 (V)\\n' ";
-$VOLTAGE_GRAPH .= "'GPRINT:avgin4:LAST:%6.2lf\\g' ";
-$VOLTAGE_GRAPH .= "'GPRINT:minin4:MIN:\\t%6.2lf\\g' ";
-$VOLTAGE_GRAPH .= "'GPRINT:avgin4:AVERAGE:\\t%6.2lf\\g' ";
-$VOLTAGE_GRAPH .= "'GPRINT:maxin4:MAX:\\t%6.2lf\\g' ";
-$VOLTAGE_GRAPH .= "'COMMENT:\\t\\g' ";
-$VOLTAGE_GRAPH .= "'LINE2:avgin4#FF0000:\\tVoltage 4 (V)\\n' ";
-$VOLTAGE_GRAPH .= "'GPRINT:avgin5:LAST:%6.2lf\\g' ";
-$VOLTAGE_GRAPH .= "'GPRINT:minin5:MIN:\\t%6.2lf\\g' ";
-$VOLTAGE_GRAPH .= "'GPRINT:avgin5:AVERAGE:\\t%6.2lf\\g' ";
-$VOLTAGE_GRAPH .= "'GPRINT:maxin5:MAX:\\t%6.2lf\\g' ";
-$VOLTAGE_GRAPH .= "'COMMENT:\\t\\g' ";
-$VOLTAGE_GRAPH .= "'LINE2:avgin5#FFFF00:\\tVoltage 5 (V)\\n' ";
-$VOLTAGE_GRAPH .= "'GPRINT:avgin6:LAST:%6.2lf\\g' ";
-$VOLTAGE_GRAPH .= "'GPRINT:minin6:MIN:\\t%6.2lf\\g' ";
-$VOLTAGE_GRAPH .= "'GPRINT:avgin6:AVERAGE:\\t%6.2lf\\g' ";
-$VOLTAGE_GRAPH .= "'GPRINT:maxin6:MAX:\\t%6.2lf\\g' ";
-$VOLTAGE_GRAPH .= "'COMMENT:\\t\\g' ";
-$VOLTAGE_GRAPH .= "'LINE2:avgin6#0000FF:\\tVoltage 6 (V)\\n' ";
-$VOLTAGE_GRAPH .= "'GPRINT:avgin7:LAST:%6.2lf\\g' ";
-$VOLTAGE_GRAPH .= "'GPRINT:minin7:MIN:\\t%6.2lf\\g' ";
-$VOLTAGE_GRAPH .= "'GPRINT:avgin7:AVERAGE:\\t%6.2lf\\g' ";
-$VOLTAGE_GRAPH .= "'GPRINT:maxin7:MAX:\\t%6.2lf\\g' ";
-$VOLTAGE_GRAPH .= "'COMMENT:\\t\\g' ";
-$VOLTAGE_GRAPH .= "'LINE2:avgin7#999999:\\tVoltage 7 (V)\\n' ";
-$VOLTAGE_GRAPH .= "'GPRINT:avgin8:LAST:%6.2lf\\g' ";
-$VOLTAGE_GRAPH .= "'GPRINT:minin8:MIN:\\t%6.2lf\\g' ";
-$VOLTAGE_GRAPH .= "'GPRINT:avgin8:AVERAGE:\\t%6.2lf\\g' ";
-$VOLTAGE_GRAPH .= "'GPRINT:maxin8:MAX:\\t%6.2lf\\g' ";
-$VOLTAGE_GRAPH .= "'COMMENT:\\t\\g' ";
-$VOLTAGE_GRAPH .= "'LINE2:avgin8#000000:\\tVoltage 8 (V)\\n' ";
+my @color = ('CC0099', 'FF99CC', '0000FF', '8B4513', 'DAA520', 'FF0000', 'FFFF00','0000FF', '999999', '000000');
+my $sensortest = `/usr/bin/rrdtool fetch $RRDDIR/$SENSORSFILE.rrd AVERAGE -s -0 |/usr/bin/head -n1| /usr/bin/tr -s ' '| /usr/bin/tr -d '\n'`;
+my @sensorarr = split / /, $sensortest;
+my %params = map { $_ => 1 } @sensorarr;
+my $isvolt = "";
+for (my $i=0; $i <= 8; $i++) {
+if(exists($params{"in$i"})) {
+ $VOLTAGE_GRAPH .= "'DEF:minin$i=$RRDDIR/$SENSORSFILE.rrd:in$i:MIN' ";
+ $VOLTAGE_GRAPH .= "'DEF:avgin$i=$RRDDIR/$SENSORSFILE.rrd:in$i:AVERAGE' ";
+ $VOLTAGE_GRAPH .= "'DEF:maxin$i=$RRDDIR/$SENSORSFILE.rrd:in$i:MAX' ";
+ $VOLTAGE_GRAPH .= "'COMMENT:Current\\tMinimum\\tAverage\\tMaximum\\tAvg\\n' " if $i == 0;
+ $VOLTAGE_GRAPH .= "'GPRINT:avgin$i:LAST:%6.2lf\\g' ";
+ $VOLTAGE_GRAPH .= "'GPRINT:minin$i:MIN:\\t%6.2lf\\g' ";
+ $VOLTAGE_GRAPH .= "'GPRINT:avgin$i:AVERAGE:\\t%6.2lf\\g' ";
+ $VOLTAGE_GRAPH .= "'GPRINT:maxin$i:MAX:\\t%6.2lf\\g' ";
+ $VOLTAGE_GRAPH .= "'COMMENT:\\t\\g' ";
+ $VOLTAGE_GRAPH .= "'LINE2:avgin0#".$color[$i].":\\tVoltage $i (V)\\n' ";
+ $isvolt=1;
+ }
+}
$FAN_GRAPH = "-b '1000' ";
$FAN_GRAPH .= "-t 'System Sensors (Fans)' ";
$FAN_GRAPH .= "-v 'RPM' ";
-$FAN_GRAPH .= "'DEF:minfan1=$RRDDIR/$SENSORSFILE.rrd:fan1:MIN' ";
-$FAN_GRAPH .= "'DEF:avgfan1=$RRDDIR/$SENSORSFILE.rrd:fan1:AVERAGE' ";
-$FAN_GRAPH .= "'DEF:maxfan1=$RRDDIR/$SENSORSFILE.rrd:fan1:MAX' ";
-$FAN_GRAPH .= "'DEF:minfan2=$RRDDIR/$SENSORSFILE.rrd:fan2:MIN' ";
-$FAN_GRAPH .= "'DEF:avgfan2=$RRDDIR/$SENSORSFILE.rrd:fan2:AVERAGE' ";
-$FAN_GRAPH .= "'DEF:maxfan2=$RRDDIR/$SENSORSFILE.rrd:fan2:MAX' ";
-$FAN_GRAPH .= "'DEF:minfan3=$RRDDIR/$SENSORSFILE.rrd:fan3:MIN' ";
-$FAN_GRAPH .= "'DEF:avgfan3=$RRDDIR/$SENSORSFILE.rrd:fan3:AVERAGE' ";
-$FAN_GRAPH .= "'DEF:maxfan3=$RRDDIR/$SENSORSFILE.rrd:fan3:MAX' ";
-$FAN_GRAPH .= "'COMMENT:Current\\tMinimum\\tAverage\\tMaximum\\tAvg\\n' ";
-$FAN_GRAPH .= "'GPRINT:avgfan1:LAST:%6.0lf\\g' ";
-$FAN_GRAPH .= "'GPRINT:minfan1:MIN:\\t%6.0lf\\g' ";
-$FAN_GRAPH .= "'GPRINT:avgfan1:AVERAGE:\\t%6.0lf\\g' ";
-$FAN_GRAPH .= "'GPRINT:maxfan1:MAX:\\t%6.0lf\\g' ";
-$FAN_GRAPH .= "'COMMENT:\\t\\g' ";
-$FAN_GRAPH .= "'LINE2:avgfan1#0000FF:\\tFan 1 (rpm)\\n' ";
-$FAN_GRAPH .= "'GPRINT:avgfan2:LAST:%6.0lf\\g' ";
-$FAN_GRAPH .= "'GPRINT:minfan2:MIN:\\t%6.0lf\\g' ";
-$FAN_GRAPH .= "'GPRINT:avgfan2:AVERAGE:\\t%6.0lf\\g' ";
-$FAN_GRAPH .= "'GPRINT:maxfan2:MAX:\\t%6.0lf\\g' ";
-$FAN_GRAPH .= "'COMMENT:\\t\\g' ";
-$FAN_GRAPH .= "'LINE2:avgfan2#8B4513:\\tFan 2 (rpm)\\n' ";
-$FAN_GRAPH .= "'GPRINT:avgfan3:LAST:%6.0lf\\g' ";
-$FAN_GRAPH .= "'GPRINT:minfan3:MIN:\\t%6.0lf\\g' ";
-$FAN_GRAPH .= "'GPRINT:avgfan3:AVERAGE:\\t%6.0lf\\g' ";
-$FAN_GRAPH .= "'GPRINT:maxfan3:MAX:\\t%6.0lf\\g' ";
-$FAN_GRAPH .= "'COMMENT:\\t\\g' ";
-$FAN_GRAPH .= "'LINE2:avgfan3#FF0000:\\tFan 3 (rpm)\\n' ";
+my $isfan = "";
+for (my $i=1; $i <= 3; $i++) {
+if(exists($params{"fan$i"})) {
+ $FAN_GRAPH .= "'DEF:minfan$i=$RRDDIR/$SENSORSFILE.rrd:fan$i:MIN' ";
+ $FAN_GRAPH .= "'DEF:avgfan$i=$RRDDIR/$SENSORSFILE.rrd:fan$i:AVERAGE' ";
+ $FAN_GRAPH .= "'DEF:maxfan$i=$RRDDIR/$SENSORSFILE.rrd:fan$i:MAX' ";
+ $FAN_GRAPH .= "'COMMENT:Current\\tMinimum\\tAverage\\tMaximum\\tAvg\\n' " if $i == 1;
+ $FAN_GRAPH .= "'GPRINT:avgfan$i:LAST:%6.2lf\\g' ";
+ $FAN_GRAPH .= "'GPRINT:minfan$i:MIN:\\t%6.2lf\\g' ";
+ $FAN_GRAPH .= "'GPRINT:avgfan$i:AVERAGE:\\t%6.2lf\\g' ";
+ $FAN_GRAPH .= "'GPRINT:maxfan$i:MAX:\\t%6.2lf\\g' ";
+ $FAN_GRAPH .= "'COMMENT:\\t\\g' ";
+ $FAN_GRAPH .= "'LINE2:avgfan$i#".$color[$i].":\\tFan $i (rpm)\\n' ";
+ $isfan=1;
+ }
+}
+
$TEMP_GRAPH = "-b '1000' ";
$TEMP_GRAPH .= "-t 'System Sensors (Temperature)' ";
$TEMP_GRAPH .= "-v '°C' ";
-$TEMP_GRAPH .= "'DEF:mintemp1=$RRDDIR/$SENSORSFILE.rrd:temp1:MIN' ";
-$TEMP_GRAPH .= "'DEF:avgtemp1=$RRDDIR/$SENSORSFILE.rrd:temp1:AVERAGE' ";
-$TEMP_GRAPH .= "'DEF:maxtemp1=$RRDDIR/$SENSORSFILE.rrd:temp1:MAX' ";
-$TEMP_GRAPH .= "'DEF:mintemp2=$RRDDIR/$SENSORSFILE.rrd:temp2:MIN' ";
-$TEMP_GRAPH .= "'DEF:avgtemp2=$RRDDIR/$SENSORSFILE.rrd:temp2:AVERAGE' ";
-$TEMP_GRAPH .= "'DEF:maxtemp2=$RRDDIR/$SENSORSFILE.rrd:temp2:MAX' ";
-$TEMP_GRAPH .= "'DEF:mintemp3=$RRDDIR/$SENSORSFILE.rrd:temp3:MIN' ";
-$TEMP_GRAPH .= "'DEF:avgtemp3=$RRDDIR/$SENSORSFILE.rrd:temp3:AVERAGE' ";
-$TEMP_GRAPH .= "'DEF:maxtemp3=$RRDDIR/$SENSORSFILE.rrd:temp3:MAX' ";
+my $istemp = "";
+for (my $i=0; $i <= 8; $i++) {
+if(exists($params{"temp$i"})) {
+ $TEMP_GRAPH .= "'DEF:mintemp$i=$RRDDIR/$SENSORSFILE.rrd:temp$i:MIN' ";
+ $TEMP_GRAPH .= "'DEF:avgtemp$i=$RRDDIR/$SENSORSFILE.rrd:temp$i:AVERAGE' ";
+ $TEMP_GRAPH .= "'DEF:maxtemp$i=$RRDDIR/$SENSORSFILE.rrd:temp$i:MAX' ";
+ $TEMP_GRAPH .= "'COMMENT:Current\\tMinimum\\tAverage\\tMaximum\\tAvg\\n' " if $i == 0;
+ $TEMP_GRAPH .= "'GPRINT:avgtemp$i:LAST:%6.2lf\\g' ";
+ $TEMP_GRAPH .= "'GPRINT:mintemp$i:MIN:\\t%6.2lf\\g' ";
+ $TEMP_GRAPH .= "'GPRINT:avgtemp$i:AVERAGE:\\t%6.2lf\\g' ";
+ $TEMP_GRAPH .= "'GPRINT:maxtemp$i:MAX:\\t%6.2lf\\g' ";
+ $TEMP_GRAPH .= "'COMMENT:\\t\\g' ";
+ $TEMP_GRAPH .= "'LINE2:avgtemp$i#".$color[$i].":\\tTemp $i (°C)\\n' ";
+ $istemp=1;
+ }
+}
+
if ( -e "$RRDDIR/${UPSFILE}1.rrd" )
{
$TEMP_GRAPH .= "'DEF:minups1temp=$RRDDIR/${UPSFILE}1.rrd:u_temperature:MIN' ";
@@ -475,25 +410,7 @@
$TEMP_GRAPH .= "'DEF:avgups2temp=$RRDDIR/${UPSFILE}2.rrd:u_temperature:AVERAGE' ";
$TEMP_GRAPH .= "'DEF:maxups2temp=$RRDDIR/${UPSFILE}2.rrd:u_temperature:MAX' ";
}
-$TEMP_GRAPH .= "'COMMENT:Current\\tMinimum\\tAverage\\tMaximum\\tAvg\\n' ";
-$TEMP_GRAPH .= "'GPRINT:avgtemp1:LAST:%6.2lf\\g' ";
-$TEMP_GRAPH .= "'GPRINT:mintemp1:MIN:\\t%6.2lf\\g' ";
-$TEMP_GRAPH .= "'GPRINT:avgtemp1:AVERAGE:\\t%6.2lf\\g' ";
-$TEMP_GRAPH .= "'GPRINT:maxtemp1:MAX:\\t%6.2lf\\g' ";
-$TEMP_GRAPH .= "'COMMENT:\\t\\g' ";
-$TEMP_GRAPH .= "'LINE2:avgtemp1#0000FF:\\tTemp 1 (°C)\\n' ";
-$TEMP_GRAPH .= "'GPRINT:avgtemp2:LAST:%6.2lf\\g' ";
-$TEMP_GRAPH .= "'GPRINT:mintemp2:MIN:\\t%6.2lf\\g' ";
-$TEMP_GRAPH .= "'GPRINT:avgtemp2:AVERAGE:\\t%6.2lf\\g' ";
-$TEMP_GRAPH .= "'GPRINT:maxtemp2:MAX:\\t%6.2lf\\g' ";
-$TEMP_GRAPH .= "'COMMENT:\\t\\g' ";
-$TEMP_GRAPH .= "'LINE2:avgtemp2#8B4513:\\tTemp 2 (°C)\\n' ";
-$TEMP_GRAPH .= "'GPRINT:avgtemp3:LAST:%6.2lf\\g' ";
-$TEMP_GRAPH .= "'GPRINT:mintemp3:MIN:\\t%6.2lf\\g' ";
-$TEMP_GRAPH .= "'GPRINT:avgtemp3:AVERAGE:\\t%6.2lf\\g' ";
-$TEMP_GRAPH .= "'GPRINT:maxtemp3:MAX:\\t%6.2lf\\g' ";
-$TEMP_GRAPH .= "'COMMENT:\\t\\g' ";
-$TEMP_GRAPH .= "'LINE2:avgtemp3#FFFF00:\\tTemp 3 (°C)\\n' ";
+
if ( -e "$RRDDIR/${UPSFILE}1.rrd" ) {
$TEMP_GRAPH .= "'GPRINT:avgups1temp:LAST:%6.2lf\\g' ";
$TEMP_GRAPH .= "'GPRINT:minups1temp:MIN:\\t%6.2lf\\g' ";
@@ -652,7 +569,7 @@
print $q->p($q->a ({href => "${scriptname}?state=detailed&typegraph=MEM"},"$header"));
if ( -e "$RRDDIR/$SENSORSFILE.rrd")
{
- print $q->p($q->a ({href => "${scriptname}?state=detailed&typegraph=TEMP"},"$header"));
+ print $q->p($q->a ({href => "${scriptname}?state=detailed&typegraph=TEMP"},"$header")) if $istemp;
}
if ( -e "$RRDDIR/${UPSFILE}1.rrd")
{
@@ -666,8 +583,8 @@
print $q->p($q->a ({href => "${scriptname}?state=detailed&typegraph=HD"},"$header"));
if ( -e "$RRDDIR/$SENSORSFILE.rrd")
{
- print $q->p($q->a ({href => "${scriptname}?state=detailed&typegraph=VOLTAGE"},"$header"));
- print $q->p($q->a ({href => "${scriptname}?state=detailed&typegraph=FAN"},"$header"));
+ print $q->p($q->a ({href => "${scriptname}?state=detailed&typegraph=VOLTAGE"},"$header")) if $isvolt;
+ print $q->p($q->a ({href => "${scriptname}?state=detailed&typegraph=FAN"},"$header")) if $isfan;
}
print $q->p($q->a ({href => "${scriptname}?state=detailed&typegraph=UPTIME"},"$header"));
if ($hosts ne "none")
diff -Nur smeserver-sysmon-6.5.old/root/usr/sbin/sysmon smeserver-sysmon-6.5/root/usr/sbin/sysmon
--- smeserver-sysmon-6.5.old/root/usr/sbin/sysmon 2019-12-26 22:47:05.000000000 -0500
+++ smeserver-sysmon-6.5/root/usr/sbin/sysmon 2019-12-26 22:53:22.233000000 -0500
@@ -10,6 +10,8 @@
use esmith::config;
use esmith::db;
use sigtrap;
+use File::Slurp qw/ read_file /;
+use File::Find::Rule;
$ENV {'PATH'} = '/bin:/sbin:/usr/bin:/usr/sbin:/usr/lib/sa';
$ENV {'LANG'} = 'C';
@@ -31,6 +33,7 @@
croak "ERROR: sysmon is not enabled" if $status ne 'enabled';
my $upsstatus = db_get_prop(\%conf, 'nut', 'status') || "disabled";
+my $rrddir = '/var/lib/rrd';
unless (fork) {
open (FILELOCK,">/var/lock/sysmon");
@@ -48,8 +51,17 @@
$SIG{TERM} = sub { unlink("/var/lock/sysmon"); exit 0; };
while(1) {
- mkdir('/var/lib/rrd') unless (-e '/var/lib/rrd');
-
+ mkdir($rrddir) unless (-e $rrddir);
+ my $days = 365;
+ my @files = File::Find::Rule->file("*.rrd")
+ ->maxdepth(1)
+ ->in($rrddir);
+ for my $file (@files){
+ if (-M $file > $days){
+ print "deleting $file\n";
+ unlink $file or warn $!;
+ }
+ }
my $lastupdate = RRDs::last("/var/lib/rrd/sysmon.rrd") || 0;
my $datahash = ();
my $badifaces = `/sbin/ifconfig -a | /bin/sed -ne '/^\\w\\+[0-9]/{;x;n;/inet addr/bd;x;s/^\\(\\w\\+[0-9]\\+\\).*/\\1/p;:d;}'` || 'none';
@@ -62,8 +74,8 @@
{
`/usr/lib64/sa/sadc 1 1 /var/lib/rrd/sysmon.process > /dev/null 2>&1; /usr/lib64/sa/sadc 1 1 /var/lib/rrd/sysmon.stats > /dev/null 2>&1`;}
my @sardata;
- if ( -x '/usr/bin/sadf' ) { @sardata=`/usr/bin/sadf -- -qrbuS -n DEV /var/lib/rrd/sysmon.process 2> /dev/null`;print "sadf used : \n";}
- else { @sardata = `/usr/bin/sar -hqruS -P ALL -n DEV -f /var/lib/rrd/sysmon.process 2> /dev/null`; print "old systat : \n";}
+ if ( -x '/usr/bin/sadf' ) { @sardata=`/usr/bin/sadf -- -qrbuS -n DEV /var/lib/rrd/sysmon.process 2> /dev/null`; }# sadf
+ else { @sardata = `/usr/bin/sar -hqruS -P ALL -n DEV -f /var/lib/rrd/sysmon.process 2> /dev/null`; }# old systat
unlink("/var/lib/rrd/sysmon.process");
if($#sardata > 0 && $sardata[0] =~ /\s+(\d+)\s+(\d{10})/ && $1 >= 45 && $1 <= 135 && $2 > $lastupdate) {
@@ -237,19 +249,29 @@
my $cnt=0;
if ( $upsstatus eq 'enabled') {
- my @upses = `cat /etc/ups/ups.conf | sed -ne 's/\\[\\(.*\\)\\]/\\1/p'`;
+ my @upsentries = ('i_voltage', 'u_load', 'b_charge', 'b_runtime', 'b_voltage', 'u_temperature') ;
+ #use File::Slurp qw/ read_file /;
+ my $upslines = read_file('/etc/ups/ups.conf');
+ my @upses = $upslines =~ m/\[(.*)\]\n/;
foreach(@upses) {
chomp;
my $upsname="$_\@localhost";
$cnt++;
my @upsdata = `/usr/bin/upsc $upsname 2> /dev/null`;
+ $upslines="ups $upsname: ";
foreach(@upsdata) {
if(/^([a-z])[^.]+\.(voltage|load|charge|runtime|temperature|humidity)\s*:\s*([0-9,.]+)/) {
my $element = "$1_$2";
+ $upslines .= "$element=$3, ";
$datahash->{ups}->{$cnt}->{$element}=$3;
if($element=~/time/i) { $datahash->{ups}->{$cnt}->{$element} /= 60; }
}
}
+ foreach my $element (@upsentries){
+ next if exists($datahash->{ups}->{$cnt}->{$element});
+ $datahash->{ups}->{$cnt}->{$element}='';
+ $upslines .= "$element=, ";
+ }
}
}
@@ -281,8 +303,9 @@
my $check = `/sbin/lsmod 2> /dev/null`;
if( $check =~ /i2c_/ ) {
my @sensordata = `/usr/bin/sensors -u 2> /dev/null`;
- foreach(@sensordata) {
- if(/(-?[0-9,.]+) \(((?:in|fan|temp|vid|vrm)[0-9]*)\)/) { $datahash->{sensors}->{$2} = $1; }
+ foreach(@sensordata) {
+#pre SME9 if(/(-?[0-9,.]+) \(((?:in|fan|temp|vid|vrm)[0-9]*)\)/) { $datahash->{sensors}->{$2} = $1; print "$2=$1, "}
+ if(/(in|fan|temp|vid|vrm)([0-9])_input: ?(-?[0-9,.]+)/) { $datahash->{sensors}->{"$1$2"} = $3;} #print "sensors:$1$2=$3\n"}
}
if(defined($datahash->{sensors})) {
RRDs::create("/var/lib/rrd/sensors.rrd","-s","60",