diff --git a/database-update.sql b/database-update.sql index 6d2e8637a..d1ab1f00b 100644 --- a/database-update.sql +++ b/database-update.sql @@ -14,3 +14,4 @@ ALTER TABLE `vrfs` CHANGE `mplsVpnVrfRouteDistinguisher` `mplsVpnVrfRouteDisting ALTER TABLE `devices` ADD `timeout` INT NULL DEFAULT NULL AFTER `port`; ALTER TABLE `devices` ADD `retries` INT NULL DEFAULT NULL AFTER `timeout`; ALTER TABLE `perf_times` CHANGE `duration` `duration` DOUBLE( 8, 2 ) NOT NULL +ALTER TABLE `sensors` ADD `poller_type` VARCHAR(16) NOT NULL DEFAULT 'snmp' AFTER `device_id`; diff --git a/discovery.php b/discovery.php index 580095ae4..6c376e962 100755 --- a/discovery.php +++ b/discovery.php @@ -45,10 +45,10 @@ if (isset($options['d'])) { ini_set('error_reporting', 1); } else { $debug = FALSE; - ini_set('display_errors', 0); +# ini_set('display_errors', 0); ini_set('display_startup_errors', 0); ini_set('log_errors', 0); - ini_set('error_reporting', 0); +# ini_set('error_reporting', 0); } @@ -79,22 +79,26 @@ if (file_exists('.svn')) $db_rev = 0; } - if ($db_rev+0 < "1223") { + if ($db_rev+0 < 1223) { include("fix-events.php"); ## Fix events table (needs to copy some data around, so needs script) } - if($db_rev+0 < 1656) { + if ($db_rev+0 < 1656) { include('fix-port-rrd.php'); ## Rewrites all port RRDs. Nothing will work without this after 1656 } + if ($db_rev+0 < 1757) { + include('fix-sensor-rrd.php'); ## Rewrites all sensor RRDs. Nothing will work without this after 1757 + } + if ($dbu_rev+0 > $db_rev) { echo("SVN revision changed.\n"); - if($db_rev+0 < "1000") { + if ($db_rev+0 < "1000") { echo("Running pre-revision 1000 SQL update script...\n"); shell_exec("scripts/update-sql.php database-update-pre1000.sql"); } - if($db_rev+0 < "1435") { + if ($db_rev+0 < "1435") { echo("Running pre-revision 1435 SQL update script...\n"); shell_exec("scripts/update-sql.php database-update-pre1435.sql"); } diff --git a/html/includes/dev-overview-data.inc.php b/html/includes/dev-overview-data.inc.php index eb55e0355..eee3e9c1e 100644 --- a/html/includes/dev-overview-data.inc.php +++ b/html/includes/dev-overview-data.inc.php @@ -2,34 +2,16 @@ if ($config['overview_show_sysDescr']) { - echo('
' . $device['sysDescr'] . "
"); + echo('
' . $device['sysDescr'] . "
"); } $uptime = $device['uptime']; -# if(is_file("images/devices/" . $device['hardware'] . ".gif")) -# { -# $dev_img = "
"; -# } -# elseif (is_file("images/devices/" . $device['hardware'] . ".jpg")) -# { -# $dev_img = "
"; -# } -# elseif (is_file("images/devices/" . $device['hardware'] . ".png")) -# { -# $dev_img = "
"; -# } -# else -# { -# $dev_img = ''; -# } - if ($device['os'] == "ios") { formatCiscoHardware($device); } if ($device['features']) { $device['features'] = "(".$device['features'].")"; } $device['os_text'] = $config['os'][$device['os']]['text']; - echo($dev_img . ' - '); + echo('
'); if($device['hardware']) { diff --git a/html/includes/graphs/sensor/current.inc.php b/html/includes/graphs/sensor/current.inc.php index ce1070829..c24d96d90 100644 --- a/html/includes/graphs/sensor/current.inc.php +++ b/html/includes/graphs/sensor/current.inc.php @@ -10,11 +10,11 @@ include("includes/graphs/common.inc.php"); $sensor['sensor_descr_fixed'] = substr(str_pad($sensor['sensor_descr'], 18),0,18); - $rrd_options .= " DEF:current=$rrd_filename:current:AVERAGE"; - $rrd_options .= " LINE1.5:current#cc0000:'" . $sensor['sensor_descr_fixed']."'"; - $rrd_options .= " GPRINT:current$current_id:MIN:%5.2lfA"; - $rrd_options .= " GPRINT:current:LAST:%5.2lfA"; - $rrd_options .= " GPRINT:current:MAX:%5.2lfA\\\\l"; + $rrd_options .= " DEF:sensor=$rrd_filename:sensor:AVERAGE"; + $rrd_options .= " LINE1.5:sensor#cc0000:'" . $sensor['sensor_descr_fixed']."'"; + $rrd_options .= " GPRINT:sensor$current_id:MIN:%5.2lfA"; + $rrd_options .= " GPRINT:sensor:LAST:%5.2lfA"; + $rrd_options .= " GPRINT:sensor:MAX:%5.2lfA\\\\l"; if(is_numeric($sensor['sensor_limit'])) $rrd_options .= " HRULE:".$sensor['sensor_limit']."#999999::dashes"; if(is_numeric($sensor['sensor_limit_low'])) $rrd_options .= " HRULE:".$sensor['sensor_limit_low']."#999999::dashes"; diff --git a/html/includes/graphs/sensor/fanspeed.inc.php b/html/includes/graphs/sensor/fanspeed.inc.php index 4cf0b9643..460757628 100644 --- a/html/includes/graphs/sensor/fanspeed.inc.php +++ b/html/includes/graphs/sensor/fanspeed.inc.php @@ -6,14 +6,14 @@ include("includes/graphs/common.inc.php"); $rrd_options .= " COMMENT:' Last Max\\n'"; - $rrd_filename = $config['rrd_dir'] . "/" . $device['hostname'] . "/" . safename("fan-" . $sensor['sensor_descr'] . ".rrd"); + $rrd_filename = $config['rrd_dir'] . "/" . $device['hostname'] . "/" . safename("fanspeed-" . $sensor['sensor_descr'] . ".rrd"); $sensor['sensor_descr_fixed'] = substr(str_pad($sensor['sensor_descr'], 20),0,20); - $rrd_options .= " DEF:fan=$rrd_filename:fan:AVERAGE"; - $rrd_options .= " LINE1.5:fan#cc0000:'" . str_replace(':','\:',str_replace('\*','*',quotemeta($sensor['sensor_descr_fixed'])))."'"; # Ugly hack :( - $rrd_options .= " GPRINT:fan:LAST:%3.0lfrpm"; - $rrd_options .= " GPRINT:fan:MAX:%3.0lfrpm\\\\l"; + $rrd_options .= " DEF:sensor=$rrd_filename:sensor:AVERAGE"; + $rrd_options .= " LINE1.5:sensor#cc0000:'" . str_replace(':','\:',str_replace('\*','*',quotemeta($sensor['sensor_descr_fixed'])))."'"; # Ugly hack :( + $rrd_options .= " GPRINT:sensor:LAST:%3.0lfrpm"; + $rrd_options .= " GPRINT:sensor:MAX:%3.0lfrpm\\\\l"; if(is_numeric($sensor['sensor_limit'])) $rrd_options .= " HRULE:".$sensor['sensor_limit']."#999999::dashes"; if(is_numeric($sensor['sensor_limit_low'])) $rrd_options .= " HRULE:".$sensor['sensor_limit_low']."#999999::dashes"; diff --git a/html/includes/graphs/sensor/frequency.inc.php b/html/includes/graphs/sensor/frequency.inc.php index db8cb915c..351b5446d 100644 --- a/html/includes/graphs/sensor/frequency.inc.php +++ b/html/includes/graphs/sensor/frequency.inc.php @@ -4,16 +4,16 @@ $scale_min = "0"; include("includes/graphs/common.inc.php"); - $rrd_filename = $config['rrd_dir'] . "/".$device['hostname']."/" . safename("freq-" . $sensor['sensor_descr'] . ".rrd"); + $rrd_filename = $config['rrd_dir'] . "/".$device['hostname']."/" . safename("frequency-" . $sensor['sensor_descr'] . ".rrd"); $rrd_options .= " COMMENT:' Last Max\\n'"; $sensor['sensor_descr_fixed'] = substr(str_pad($sensor['sensor_descr'], 28),0,28); - $rrd_options .= " DEF:freq=$rrd_filename:freq:AVERAGE"; - $rrd_options .= " LINE1.5:freq#cc0000:'" . $sensor['sensor_descr_fixed']."'"; - $rrd_options .= " GPRINT:freq:LAST:%3.0lfHz"; - $rrd_options .= " GPRINT:freq:MAX:%3.0lfHz\\\\l"; + $rrd_options .= " DEF:sensor=$rrd_filename:sensor:AVERAGE"; + $rrd_options .= " LINE1.5:sensor#cc0000:'" . $sensor['sensor_descr_fixed']."'"; + $rrd_options .= " GPRINT:sensor:LAST:%3.0lfHz"; + $rrd_options .= " GPRINT:sensor:MAX:%3.0lfHz\\\\l"; if(is_numeric($sensor['sensor_limit'])) $rrd_options .= " HRULE:".$sensor['sensor_limit']."#999999::dashes"; if(is_numeric($sensor['sensor_limit_low'])) $rrd_options .= " HRULE:".$sensor['sensor_limit_low']."#999999::dashes"; diff --git a/html/includes/graphs/sensor/humidity.inc.php b/html/includes/graphs/sensor/humidity.inc.php index eede593a0..67bb1ef3d 100644 --- a/html/includes/graphs/sensor/humidity.inc.php +++ b/html/includes/graphs/sensor/humidity.inc.php @@ -12,21 +12,21 @@ include("includes/graphs/common.inc.php"); $sensor['sensor_descr_fixed'] = substr(str_pad($sensor['sensor_descr'], 28),0,28); - $rrd_options .= " DEF:humidity=$rrd_filename:humidity:AVERAGE"; - $rrd_options .= " DEF:humidity_max=$rrd_filename:humidity:MAX"; - $rrd_options .= " DEF:humidity_min=$rrd_filename:humidity:MIN"; - $rrd_options .= " CDEF:humiditywarm=humidity_max,".$sensor['sensor_limit'].",GT,humidity,UNKN,IF"; - $rrd_options .= " CDEF:humiditycold=humidity_min,20,LT,humidity,UNKN,IF"; - $rrd_options .= " AREA:humidity_max#c5c5c5"; - $rrd_options .= " AREA:humidity_min#ffffffff"; + $rrd_options .= " DEF:sensor=$rrd_filename:sensor:AVERAGE"; + $rrd_options .= " DEF:sensor_max=$rrd_filename:sensor:MAX"; + $rrd_options .= " DEF:sensor_min=$rrd_filename:sensor:MIN"; + $rrd_options .= " CDEF:sensorwarm=humidity_max,".$sensor['sensor_limit'].",GT,humidity,UNKN,IF"; + $rrd_options .= " CDEF:sensorcold=humidity_min,20,LT,humidity,UNKN,IF"; + $rrd_options .= " AREA:sensor_max#c5c5c5"; + $rrd_options .= " AREA:sensor_min#ffffffff"; -# $rrd_options .= " AREA:humidity#bbd392"; -# $rrd_options .= " AREA:humiditywarm#FFCCCC"; -# $rrd_options .= " AREA:humiditycold#CCCCFF"; - $rrd_options .= " LINE1:humidity#cc0000:'" . str_replace(':','\:',str_replace('\*','*',quotemeta($sensor['sensor_descr_fixed'])))."'"; # Ugly hack :( - $rrd_options .= " LINE1:humiditywarm#660000"; - $rrd_options .= " GPRINT:humidity:LAST:%3.0lf%%"; - $rrd_options .= " GPRINT:humidity:MAX:%3.0lf%%\\\\l"; +# $rrd_options .= " AREA:sensor#bbd392"; +# $rrd_options .= " AREA:sensorwarm#FFCCCC"; +# $rrd_options .= " AREA:sensorcold#CCCCFF"; + $rrd_options .= " LINE1:sensor#cc0000:'" . str_replace(':','\:',str_replace('\*','*',quotemeta($sensor['sensor_descr_fixed'])))."'"; # Ugly hack :( + $rrd_options .= " LINE1:sensorwarm#660000"; + $rrd_options .= " GPRINT:sensor:LAST:%3.0lf%%"; + $rrd_options .= " GPRINT:sensor:MAX:%3.0lf%%\\\\l"; if(is_numeric($sensor['sensor_limit'])) $rrd_options .= " HRULE:".$sensor['sensor_limit']."#999999::dashes"; if(is_numeric($sensor['sensor_limit_low'])) $rrd_options .= " HRULE:".$sensor['sensor_limit_low']."#999999::dashes"; diff --git a/html/includes/graphs/sensor/temperature.inc.php b/html/includes/graphs/sensor/temperature.inc.php index 787baf7ad..26ecc52dd 100644 --- a/html/includes/graphs/sensor/temperature.inc.php +++ b/html/includes/graphs/sensor/temperature.inc.php @@ -8,30 +8,30 @@ include("includes/graphs/common.inc.php"); $rrd_options .= " COMMENT:' Cur Min Max\\n'"; ### FIXME: Overwrite default because it won't work here yet - $rrd_filename = $config['rrd_dir'] . "/" . $device['hostname'] . "/temp-" . safename($sensor['sensor_type']."-".$sensor['sensor_index']) . ".rrd"; + $rrd_filename = $config['rrd_dir'] . "/" . $device['hostname'] . "/temperature-" . safename($sensor['sensor_type']."-".$sensor['sensor_index']) . ".rrd"; $sensor['sensor_descr_fixed'] = substr(str_pad($sensor['sensor_descr'], 21),0,21); $sensor['sensor_descr_fixed'] = str_replace(':','\:',str_replace('\*','*',$sensor['sensor_descr_fixed'])); - $rrd_options .= " DEF:temp=$rrd_filename:temp:AVERAGE"; - $rrd_options .= " DEF:temp_max=$rrd_filename:temp:MAX"; - $rrd_options .= " DEF:temp_min=$rrd_filename:temp:MIN"; - $rrd_options .= " CDEF:tempwarm=temp_max,".$sensor['sensor_limit'].",GT,temp,UNKN,IF"; - $rrd_options .= " CDEF:tempcold=temp_min,20,LT,temp,UNKN,IF"; - $rrd_options .= " AREA:temp_max#c5c5c5"; - $rrd_options .= " AREA:temp_min#ffffffff"; + $rrd_options .= " DEF:sensor=$rrd_filename:sensor:AVERAGE"; + $rrd_options .= " DEF:sensor_max=$rrd_filename:sensor:MAX"; + $rrd_options .= " DEF:sensor_min=$rrd_filename:sensor:MIN"; + $rrd_options .= " CDEF:sensorwarm=sensor_max,".$sensor['sensor_limit'].",GT,sensor,UNKN,IF"; + $rrd_options .= " CDEF:sensorcold=sensor_min,20,LT,sensor,UNKN,IF"; + $rrd_options .= " AREA:sensor_max#c5c5c5"; + $rrd_options .= " AREA:sensor_min#ffffffff"; -# $rrd_options .= " AREA:temp#bbd392"; -# $rrd_options .= " AREA:tempwarm#FFCCCC"; -# $rrd_options .= " AREA:tempcold#CCCCFF"; -# $rrd_options .= " LINE1:temp#cc0000:'" . str_replace(':','\:',str_replace('\*','*',quotemeta($sensor['sensor_descr_fixed'])))."'"; # Ugly hack :( +# $rrd_options .= " AREA:sensor#bbd392"; +# $rrd_options .= " AREA:sensorwarm#FFCCCC"; +# $rrd_options .= " AREA:sensorcold#CCCCFF"; +# $rrd_options .= " LINE1:sensor#cc0000:'" . str_replace(':','\:',str_replace('\*','*',quotemeta($sensor['sensor_descr_fixed'])))."'"; # Ugly hack :( - $rrd_options .= " LINE1.5:temp#cc0000:'" . $sensor['sensor_descr_fixed']."'"; -# $rrd_options .= " LINE1.5:tempwarm#660000"; - $rrd_options .= " GPRINT:temp:LAST:%4.1lfC"; - $rrd_options .= " GPRINT:temp_min:MIN:%4.1lfC"; - $rrd_options .= " GPRINT:temp_max:MAX:%4.1lfC\\\\l"; + $rrd_options .= " LINE1.5:sensor#cc0000:'" . $sensor['sensor_descr_fixed']."'"; +# $rrd_options .= " LINE1.5:sensorwarm#660000"; + $rrd_options .= " GPRINT:sensor:LAST:%4.1lfC"; + $rrd_options .= " GPRINT:sensor_min:MIN:%4.1lfC"; + $rrd_options .= " GPRINT:sensor_max:MAX:%4.1lfC\\\\l"; if(is_numeric($sensor['sensor_limit'])) $rrd_options .= " HRULE:".$sensor['sensor_limit']."#999999::dashes"; if(is_numeric($sensor['sensor_limit_low'])) $rrd_options .= " HRULE:".$sensor['sensor_limit_low']."#999999::dashes"; diff --git a/html/includes/graphs/sensor/voltage.inc.php b/html/includes/graphs/sensor/voltage.inc.php index 84911b158..2fcf304f0 100644 --- a/html/includes/graphs/sensor/voltage.inc.php +++ b/html/includes/graphs/sensor/voltage.inc.php @@ -4,7 +4,7 @@ $scale_min = "0"; include("includes/graphs/common.inc.php"); -$rrd_filename = $config['rrd_dir'] . "/" . $device['hostname'] . "/volt-" . safename($sensor['sensor_type']."-".$sensor['sensor_index']) . ".rrd"; +$rrd_filename = $config['rrd_dir'] . "/" . $device['hostname'] . "/voltage-" . safename($sensor['sensor_type']."-".$sensor['sensor_index']) . ".rrd"; $rrd_options .= " -A "; $rrd_options .= " COMMENT:' Last Max\\n'"; @@ -12,17 +12,17 @@ $rrd_options .= " COMMENT:' Last Max\\n'"; $sensor['sensor_descr_fixed'] = substr(str_pad($sensor['sensor_descr'], 22),0,22); $sensor['sensor_descr_fixed'] = str_replace(':','\:',str_replace('\*','*',$sensor['sensor_descr_fixed'])); -$rrd_options .= " DEF:volt=$rrd_filename:volt:AVERAGE"; -$rrd_options .= " DEF:volt_max=$rrd_filename:volt:MAX"; -$rrd_options .= " DEF:volt_min=$rrd_filename:volt:MIN"; +$rrd_options .= " DEF:sensor=$rrd_filename:sensor:AVERAGE"; +$rrd_options .= " DEF:sensor_max=$rrd_filename:sensor:MAX"; +$rrd_options .= " DEF:sensor_min=$rrd_filename:sensor:MIN"; -$rrd_options .= " AREA:volt_max#c5c5c5"; -$rrd_options .= " AREA:volt_min#ffffffff"; +$rrd_options .= " AREA:sensor_max#c5c5c5"; +$rrd_options .= " AREA:sensor_min#ffffffff"; -#$rrd_options .= " AREA:volt#FFFF99"; -$rrd_options .= " LINE1.5:volt#cc0000:'" . $sensor['sensor_descr_fixed']."'"; -$rrd_options .= " GPRINT:volt:LAST:%6.2lfV"; -$rrd_options .= " GPRINT:volt:MAX:%6.2lfV\\\\l"; +#$rrd_options .= " AREA:sensor#FFFF99"; +$rrd_options .= " LINE1.5:sensor#cc0000:'" . $sensor['sensor_descr_fixed']."'"; +$rrd_options .= " GPRINT:sensor:LAST:%6.2lfV"; +$rrd_options .= " GPRINT:sensor:MAX:%6.2lfV\\\\l"; if(is_numeric($sensor['sensor_limit'])) $rrd_options .= " HRULE:".$sensor['sensor_limit']."#999999::dashes"; if(is_numeric($sensor['sensor_limit_low'])) $rrd_options .= " HRULE:".$sensor['sensor_limit_low']."#999999::dashes"; diff --git a/html/pages/device.inc.php b/html/pages/device.inc.php index ca4cb3655..8f0600965 100644 --- a/html/pages/device.inc.php +++ b/html/pages/device.inc.php @@ -229,6 +229,7 @@ echo(""); echo('
'); +## FIXME safe?? include("pages/device/".mres($section).".inc.php"); diff --git a/includes/discovery/entity-sensor.inc.php b/includes/discovery/entity-sensor.inc.php index 040d210b6..92f1802f1 100644 --- a/includes/discovery/entity-sensor.inc.php +++ b/includes/discovery/entity-sensor.inc.php @@ -60,9 +60,6 @@ if(is_array($oids)) $valid = TRUE; $type = $entitysensor[$entry['entPhySensorType']]; - - $descr = str_ireplace("temperature", "", $descr); - $descr = str_ireplace("sensor", "", $descr); ### FIXME this stuff is foul diff --git a/includes/discovery/functions.inc.php b/includes/discovery/functions.inc.php index 691704e0d..02a0a1f24 100644 --- a/includes/discovery/functions.inc.php +++ b/includes/discovery/functions.inc.php @@ -1,28 +1,27 @@ diff --git a/includes/discovery/sensors.inc.php b/includes/discovery/sensors.inc.php index a4f6ff822..afb7b29d4 100644 --- a/includes/discovery/sensors.inc.php +++ b/includes/discovery/sensors.inc.php @@ -6,6 +6,7 @@ echo("Sensors: "); include("includes/discovery/cisco-entity-sensor.inc.php"); include("includes/discovery/entity-sensor.inc.php"); +include("includes/discovery/ipmi.inc.php"); include("includes/discovery/temperatures.inc.php"); include("includes/discovery/humidity.inc.php"); diff --git a/includes/functions.php b/includes/functions.php index 1f470fbdc..6c441acc5 100755 --- a/includes/functions.php +++ b/includes/functions.php @@ -76,6 +76,19 @@ function write_dev_attrib($device_id, $attrib_type, $attrib_value) return mysql_affected_rows(); } +function get_dev_attrib($device, $attrib_type) +{ + $sql = "SELECT attrib_value FROM devices_attribs WHERE `device_id` = '" . $device['device_id'] . "' AND `attrib_type` = '$attrib_type'"; + if ($row = mysql_fetch_assoc(mysql_query($sql))) + { + return $row['attrib_value']; + } + else + { + return NULL; + } +} + function shorthost($hostname, $len=16) { $parts = explode(".", $hostname); @@ -679,7 +692,7 @@ function isHexString($str) } # Include all .inc.php files in $dir -function include_dir($dir, $regex) +function include_dir($dir, $regex = "") { global $device, $config; if ( $regex == "") diff --git a/includes/polling/current.inc.php b/includes/polling/current.inc.php index a2a7689c9..66c79f051 100644 --- a/includes/polling/current.inc.php +++ b/includes/polling/current.inc.php @@ -1,6 +1,6 @@ diff --git a/includes/polling/temperatures.inc.php b/includes/polling/temperatures.inc.php index 29890d500..b33fee651 100755 --- a/includes/polling/temperatures.inc.php +++ b/includes/polling/temperatures.inc.php @@ -1,6 +1,6 @@ ms - php snmp extension requires the timeout in microseconds. - if(isset($timeout)) { $timeout = $timeout*1000*1000; } - foreach($oids as $oid) { - if ($device['snmpver'] == "v2c") { - $data = @snmp2_get($device['hostname'].":".$device['port'], $device['community'], $oid, $timeout, $retries); - } elseif ( $device['snmpver'] == "v1") { - $data = @snmpget($device['hostname'].":".$device['port'], $device['community'], $oid, $timeout, $retries); - } + if (is_numeric($device['timeout'])) { $timeout = $device['timeout']; } elseif (isset($config['snmp']['timeout'])) { $timeout = $config['snmp']['timeout']; } + if (is_numeric($device['retries'])) { $timeout = $device['retries']; } elseif (isset($config['snmp']['retries'])) { $timeout = $config['snmp']['retries']; } + if ($config['snmp']['internal'] == true) + { + if ($mib && $mibdir && !$mibs_loaded[$mib]) + { + @snmp_read_mib($mibdir."/".$mib); + $mibs_loaded[$mib] = TRUE; + } - list($oid, $index) = explode(".", $oid); - if ($data) { $array[$index][$oid] = $data; } - else { $array[$index][$oid] = null; } - } - } else { - $cmd = $config['snmpget'] . " -" . $device['snmpver'] . " -c " . $device['community'] . " "; - if ($options) { $cmd .= " " . $options; } - if ($mib) { $cmd .= " -m " . $mib; } - if ($mibdir) { $cmd .= " -M " . $mibdir; } else { $cmd .= " -M ".$config['mibdir']; } + snmp_set_quick_print(1); + $oids = explode(" ",trim($oids)); + // s->ms - php snmp extension requires the timeout in microseconds. + if(isset($timeout)) { $timeout = $timeout*1000*1000; } + foreach($oids as $oid) + { + if ($device['snmpver'] == "v2c") + { + $data = @snmp2_get($device['hostname'].":".$device['port'], $device['community'], $oid, $timeout, $retries); + } + elseif ( $device['snmpver'] == "v1") + { + $data = @snmpget($device['hostname'].":".$device['port'], $device['community'], $oid, $timeout, $retries); + } - if (isset($timeout)) { $cmd .= " -t " . $timeout; } - if (isset($retries)) { $cmd .= " -r " . $retries; } + list($oid, $index) = explode(".", $oid); + if ($data) { $array[$index][$oid] = $data; } + else { $array[$index][$oid] = null; } + } + } + else + { + $cmd = $config['snmpget'] . " -" . $device['snmpver'] . " -c " . $device['community'] . " "; + if ($options) { $cmd .= " " . $options; } + if ($mib) { $cmd .= " -m " . $mib; } + if ($mibdir) { $cmd .= " -M " . $mibdir; } else { $cmd .= " -M ".$config['mibdir']; } - $cmd .= " ".$device['hostname'].":".$device['port']." ".$oids; - if (!$debug) { $cmd .= " 2>/dev/null"; } - if ($debug) { echo("$cmd\n"); } - $data = trim(shell_exec($cmd)); - $runtime_stats['snmpget']++; - if ($debug) { echo("$data\n"); } - foreach(explode("\n", $data) as $entry) { - list($oid,$value) = explode("=", $entry); - $oid = trim($oid); $value = trim($value); - list($oid, $index) = explode(".", $oid); - if (!strstr($value, "at this OID") && isset($oid) && isset($index)) { - $array[$index][$oid] = $value; - } - } - } - return $array; + if (isset($timeout)) { $cmd .= " -t " . $timeout; } + if (isset($retries)) { $cmd .= " -r " . $retries; } + + $cmd .= " ".$device['hostname'].":".$device['port']." ".$oids; + if (!$debug) { $cmd .= " 2>/dev/null"; } + if ($debug) { echo("$cmd\n"); } + $data = trim(shell_exec($cmd)); + $runtime_stats['snmpget']++; + if ($debug) { echo("$data\n"); } + foreach(explode("\n", $data) as $entry) + { + list($oid,$value) = explode("=", $entry); + $oid = trim($oid); $value = trim($value); + list($oid, $index) = explode(".", $oid); + if (!strstr($value, "at this OID") && isset($oid) && isset($index)) + { + $array[$index][$oid] = $value; + } + } + } + return $array; } function snmp_get($device, $oid, $options = NULL, $mib = NULL, $mibdir = NULL) { diff --git a/includes/static-config.php b/includes/static-config.php index 80bad0d79..51ce0b6e7 100644 --- a/includes/static-config.php +++ b/includes/static-config.php @@ -393,6 +393,11 @@ $config['os'][$os]['text'] = "Delta UPS"; $config['os'][$os]['type'] = "power"; $config['os'][$os]['icon'] = "delta"; +$os = "engenius"; +$config['os'][$os]['type'] = "network"; +$config['os'][$os]['text'] = "EnGenius Access Point"; +$config['os'][$os]['icon'] = "engenius"; + $os = "airport"; $config['os'][$os]['type'] = "network"; $config['os'][$os]['text'] = "Apple AirPort"; @@ -818,5 +823,11 @@ $config['twomonth'] = time() - (2 * 31 * 24 * 60 * 60); $config['threemonth'] = time() - (3 * 31 * 24 * 60 * 60); $config['year'] = time() - (365 * 24 * 60 * 60); +# IPMI sensor type mappings +$ipmi_unit['Volts'] = 'voltage'; +$ipmi_unit['degrees C'] = 'temperature'; +$ipmi_unit['RPM'] = 'fanspeed'; +$ipmi_unit['Watts'] = ''; +$ipmi_unit['discrete'] = ''; ?> diff --git a/poller.php b/poller.php index 283ec4c41..6135024f0 100755 --- a/poller.php +++ b/poller.php @@ -55,10 +55,10 @@ if (isset($options['d'])) { ini_set('error_reporting', 1); } else { $debug = FALSE; - ini_set('display_errors', 0); +# ini_set('display_errors', 0); ini_set('display_startup_errors', 0); ini_set('log_errors', 0); - ini_set('error_reporting', 0); +# ini_set('error_reporting', 0); } @@ -193,6 +193,7 @@ while ($device = mysql_fetch_assoc($device_query)) $sysLocation = str_replace("\"","", $sysLocation); + include("includes/polling/ipmi.inc.php"); include("includes/polling/temperatures.inc.php"); include("includes/polling/humidity.inc.php"); include("includes/polling/fanspeeds.inc.php");