$entry) { // echo("[" . $entry['entPhySensorType'] . "|" . $entry['entPhySensorValue']. "|" . $index . "]"); if ($entitysensor[$entry['entPhySensorType']] && is_numeric($entry['entPhySensorValue']) && is_numeric($index)) { $entPhysicalIndex = $index; $oid = '.1.3.6.1.2.1.99.1.1.1.4.'.$index; $current = $entry['entPhySensorValue']; // ENTITY-SENSOR-MIB::entPhySensorUnitsDisplay.11 = STRING: "C" $descr = $entity_array[$index]['entPhysicalName']; // if ($descr || $device['os'] == "iosxr") if ($descr) { $descr = rewrite_entity_descr($descr); } else { $descr = $entity_array[$index]['entPhysicalDescr']; $descr = rewrite_entity_descr($descr); } $valid_sensor = check_entity_sensor($descr, $device); $type = $entitysensor[$entry['entPhySensorType']]; // FIXME this stuff is foul if ($entry['entPhySensorScale'] == 'nano') { $divisor = '1000000000'; $multiplier = '1'; } if ($entry['entPhySensorScale'] == 'micro') { $divisor = '1000000'; $multiplier = '1'; } if ($entry['entPhySensorScale'] == 'milli') { $divisor = '1000'; $multiplier = '1'; } if ($entry['entPhySensorScale'] == 'units') { $divisor = '1'; $multiplier = '1'; } if ($entry['entPhySensorScale'] == 'kilo') { $divisor = '1'; $multiplier = '1000'; } if ($entry['entPhySensorScale'] == 'mega') { $divisor = '1'; $multiplier = '1000000'; } if ($entry['entPhySensorScale'] == 'giga') { $divisor = '1'; $multiplier = '1000000000'; } if ($entry['entPhySensorScale'] == 'yocto') { $divisor = '1'; $multiplier = '1'; } if (is_numeric($entry['entPhySensorPrecision']) && $entry['entPhySensorPrecision'] > '0') { $divisor = $divisor.str_pad('', $entry['entPhySensorPrecision'], '0'); } $current = ($current * $multiplier / $divisor); if ($type == 'temperature') { if ($current > '200') { $valid_sensor = false; } $descr = preg_replace('/[T|t]emperature[|s]/', '', $descr); } // echo($descr . "|" . $index . "|" .$current . "|" . $multiplier . "|" . $divisor ."|" . $entry['entPhySensorScale'] . "|" . $entry['entPhySensorPrecision'] . "\n"); if ($current == '-127' || ($device['os'] == 'asa' && str_contains($device['hardware'], 'sc'))) { $valid_sensor = false; } if ($valid_sensor && dbFetchCell("SELECT COUNT(*) FROM `sensors` WHERE device_id = ? AND `sensor_class` = ? AND `sensor_type` = 'cisco-entity-sensor' AND `sensor_index` = ?", array($device['device_id'], $type, $index)) == '0') { // Check to make sure we've not already seen this sensor via cisco's entity sensor mib discover_sensor($valid['sensor'], $type, $device, $oid, $index, 'entity-sensor', $descr, $divisor, $multiplier, null, null, null, null, $current); } }//end if }//end foreach }//end if echo "\n";