$entry) { #echo("[" . $entry['entSensorType'] . "|" . $entry['entSensorValue']. "|" . $index . "]"); if($entitysensor[$entry['entSensorType']] && is_numeric($entry['entSensorValue']) && is_numeric($index)) { $entPhysicalIndex = $index; $descr = $entity_array[$index]['entPhysicalName']; if($descr || $device['os'] == "iosxr") { $descr = rewrite_entity_descr($descr); } else { $descr = $entity_array[$index]['entPhysicalDescr']; $descr = rewrite_entity_descr($descr); } ## Set description based on measured entity if it exists if(is_numeric($entry['entSensorMeasuredEntity']) && $entry['entSensorMeasuredEntity']) { $measured_descr = $entity_array[$entry['entSensorMeasuredEntity']]['entPhysicalName']; if(!measured_descr) { $measured_descr = $entity_array[$entry['entSensorMeasuredEntity']]['entPhysicalDescr']; } $descr = $measured_descr . " - " . $descr; } ### Bit dirty also, clean later $descr = str_replace("Temp: ", "", $descr); $descr = str_ireplace("temperature ", "", $descr); $oid = ".1.3.6.1.4.1.9.9.91.1.1.1.1.4.".$index; $current = $entry['entSensorValue']; $type = $entitysensor[$entry['entSensorType']]; #echo("$index : ".$entry['entSensorScale']."|"); ### FIXME this stuff is foul if($entry['entSensorScale'] == "nano") { $divisor = "1000000000"; $multiplier = "1"; } if($entry['entSensorScale'] == "micro") { $divisor = "1000000"; $multiplier = "1"; } if($entry['entSensorScale'] == "milli") { $divisor = "1000"; $multiplier = "1"; } if($entry['entSensorScale'] == "units") { $divisor = "1"; $multiplier = "1"; } if($entry['entSensorScale'] == "kilo") { $divisor = "1"; $multiplier = "1000"; } if($entry['entSensorScale'] == "mega") { $divisor = "1"; $multiplier = "1000000"; } if($entry['entSensorScale'] == "giga") { $divisor = "1"; $multiplier = "1000000000"; } if(is_numeric($entry['entSensorPrecision']) && $entry['entSensorPrecision'] > "0") { $divisor = $divisor . str_pad('', $entry['entSensorPrecision'], "0"); } $current = $current * $multiplier / $divisor; ### Set thresholds to null $limit = NULL; $low_limit = NULL; $warn_limit = NULL; $warn_limit_low = NULL; ### Check thresholds for this entry (bit dirty, but it works!) if(is_array($t_oids[$index])) { foreach($t_oids[$index] as $t_index => $entry) { ### Critical Limit if($entry['entSensorThresholdSeverity'] == "major" && $entry['entSensorThresholdRelation'] == "greaterOrEqual") { $limit = $entry['entSensorThresholdValue'] * $multiplier / $divisor; } if($entry['entSensorThresholdSeverity'] == "major" && $entry['entSensorThresholdRelation'] == "lessOrEqual") { $limit_low = $entry['entSensorThresholdValue'] * $multiplier / $divisor; } ### Warning Limit if($entry['entSensorThresholdSeverity'] == "minor" && $entry['entSensorThresholdRelation'] == "greaterOrEqual") { $warn_limit = $entry['entSensorThresholdValue'] * $multiplier / $divisor; } if($entry['entSensorThresholdSeverity'] == "minor" && $entry['entSensorThresholdRelation'] == "lessOrEqual") { $warn_limit_low = $entry['entSensorThresholdValue'] * $multiplier / $divisor; } } } ### End Threshold code $ok = TRUE; if($current == "-127") { $ok = FALSE; } ## False reading # if($type == "temperature" && $current < 1) { $ok = FALSE; } ## False reading. Temperature <1 :) if($descr == "") { $ok = FALSE; } ## Invalid description. Lots of these on Nexus if($ok) { # echo("\n$valid_sensor, $type, $device, $oid, $index, 'cisco-entity-sensor', $descr, $divisor, $multiplier, $limit_low, $warn_limit_low, $limit, $warn_limit, $current"); discover_sensor($valid_sensor, $type, $device, $oid, $index, 'cisco-entity-sensor', $descr, $divisor, $multiplier, $limit_low, $warn_limit_low, $limit, $warn_limit, $current); } $cisco_entity_temperature = 1; unset($limit, $limit_low, $warn_limit, $warn_limit_low); } } } } ?>