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",