$entry) { $name = "Shelf $index"; // Power Status $descr = "Power A - $name"; $oid_name = 'shelfAPowerStatus'; $oid_num = '.1.3.6.1.4.1.5504.3.2.2.1.1.' . $index; $value = $entry[$oid_name]; discover_status($device, $oid_num, $oid_name . '.' . $index, 'shelfPowerStatus', $descr, $value, ['entPhysicalClass' => 'powersupply']); $descr = "Power B - $name"; $oid_name = 'shelfBPowerStatus'; $oid_num = '.1.3.6.1.4.1.5504.3.2.2.1.2.' . $index; $value = $entry[$oid_name]; discover_status($device, $oid_num, $oid_name . '.' . $index, 'shelfPowerStatus', $descr, $value, ['entPhysicalClass' => 'powersupply']); // Temperature Status $descr = "Temperature - $name"; $oid_name = 'shelfTemperatureStatus'; $oid_num = '.1.3.6.1.4.1.5504.3.2.2.1.3.' . $index; $value = $entry[$oid_name]; discover_status($device, $oid_num, $oid_name . '.' . $index, 'shelfTemperatureStatus', $descr, $value, ['entPhysicalClass' => 'temperature']); // Fan Status $descr = "Fan Tray - $name"; $oid_name = 'shelfFanTrayStatus'; $oid_num = '.1.3.6.1.4.1.5504.3.2.2.1.4.' . $index; $value = $entry[$oid_name]; discover_status($device, $oid_num, $oid_name . '.' . $index, 'shelfFanTrayStatus', $descr, $value, ['entPhysicalClass' => 'fan']); } //ZHONE-SHELF-MONITOR-MIB::shelfFanSpeed.1.1 = INTEGER: 9000 //ZHONE-SHELF-MONITOR-MIB::shelfFanSpeed.1.2 = INTEGER: 9000 //ZHONE-SHELF-MONITOR-MIB::shelfFanSpeed.1.3 = INTEGER: 9000 //ZHONE-SHELF-MONITOR-MIB::shelfFanLocation.1.1 = STRING: back //ZHONE-SHELF-MONITOR-MIB::shelfFanLocation.1.2 = STRING: middle //ZHONE-SHELF-MONITOR-MIB::shelfFanLocation.1.3 = STRING: front //ZHONE-SHELF-MONITOR-MIB::shelfFanLowSpeedThreshold.1.1 = INTEGER: 544 //ZHONE-SHELF-MONITOR-MIB::shelfFanLowSpeedThreshold.1.2 = INTEGER: 544 //ZHONE-SHELF-MONITOR-MIB::shelfFanLowSpeedThreshold.1.3 = INTEGER: 544 $oids = snmpwalk_cache_oid($device, 'shelfFanTable', [], $mib); //print_vars($oids); foreach ($oids as $index => $entry) { [$zhoneShelfIndex, $shelfFanIndex] = explode('.', $index); $name = "Shelf $zhoneShelfIndex"; $descr = 'Fan ' . trim($entry['shelfFanLocation']) . ' - ' . $name; $oid_name = 'shelfFanSpeed'; $oid_num = ".1.3.6.1.4.1.5504.3.2.3.1.2.$index"; $type = $mib . '-' . $oid_name; $value = $entry[$oid_name]; $limits = ['limit_low' => $entry['shelfFanLowSpeedThreshold']]; discover_sensor('fanspeed', $device, $oid_num, $index, $type, $descr, 1, $value, $limits); } //ZHONE-SHELF-MONITOR-MIB::shelfTemperature.1.1 = INTEGER: 29 //ZHONE-SHELF-MONITOR-MIB::shelfTemperatureLocation.1.1 = STRING: Inlet //ZHONE-SHELF-MONITOR-MIB::shelfTemperatureHighThreshold.1.1 = INTEGER: 75 //ZHONE-SHELF-MONITOR-MIB::shelfTemperatureLowThreshold.1.1 = INTEGER: -12 $oids = snmpwalk_cache_oid($device, 'shelfTemperatureTable', [], $mib); //print_vars($oids); foreach ($oids as $index => $entry) { [$zhoneShelfIndex, $shelfTemperatureIndex] = explode('.', $index); $name = "Shelf $zhoneShelfIndex"; $descr = 'Temperature ' . trim($entry['shelfTemperatureLocation']) . ' - ' . $name; $oid_name = 'shelfTemperature'; $oid_num = ".1.3.6.1.4.1.5504.3.2.4.1.2.$index"; $type = $mib . '-' . $oid_name; $value = $entry[$oid_name]; $limits = ['limit_high' => $entry['shelfTemperatureHighThreshold'], 'limit_low' => $entry['shelfTemperatureLowThreshold']]; discover_sensor('temperature', $device, $oid_num, $index, $type, $descr, 1, $value, $limits); } // EOF