# Pastebin FaAUgFAa diff --git a/includes/discovery/sensors/temperatures/qnap.inc.php b/includes/discovery/sensors/temperatures/qnap.inc.php index a82959c..0b3fd29 100644 --- a/includes/discovery/sensors/temperatures/qnap.inc.php +++ b/includes/discovery/sensors/temperatures/qnap.inc.php @@ -16,21 +16,18 @@ $system_temperature_oid = '.1.3.6.1.4.1.24681.1.3.6.0'; $system_temperature = snmp_get($device, $system_temperature_oid, '-Oqv'); discover_sensor($valid['sensor'], 'temperature', $device, $system_temperature_oid, '99', 'snmp', 'System Temperature', '1', '1', null, null, null, null, $system_temperature); -$temps_oid = '24681.1.2.11.1.3.'; -$serials_oid = '24681.1.2.11.1.5.'; - $disk_temperature_oid = '.1.3.6.1.4.1.24681.1.2.11.1.3'; -$disk_serial_oid = '1.3.6.1.4.1.24681.1.2.11.1.5'; +$disk_serial_oid = '.1.3.6.1.4.1.24681.1.2.11.1.5'; -$hdd_temps = snmpwalk_cache_multi_oid($device, $disk_temperature_oid, array()); -$hdd_serials = snmpwalk_cache_multi_oid($device, $disk_serial_oid, array()); +$hdd_temps = snmpwalk_cache_numerical_oid($device, $disk_temperature_oid, array(), null, null, '-OQUsn'); +$hdd_serials = snmpwalk_cache_numerical_oid($device, $disk_serial_oid, array(), null, null, '-OQUsn'); if (is_array($hdd_temps) && !empty($hdd_temps)) { foreach ($hdd_temps as $index => $entry) { - $index = str_replace($temps_oid, '', $index); - $disk_temperature = $entry['enterprises']; - $disk_serial = str_replace('"', '', $hdd_serials[$serials_oid . $index]['enterprises']); - + $oid = $disk_temperature_oid . '.' . $index; + $disk_oid = $disk_serial_oid . '.' . $index; + $disk_temperature = $entry[$oid]; + $disk_serial = $hdd_serials[$index][$disk_oid]; if ($disk_serial == '--') { $disk_descr = "HDD $index empty bay"; } else { diff --git a/includes/snmp.inc.php b/includes/snmp.inc.php index 020d90f..6cad528 100644 --- a/includes/snmp.inc.php +++ b/includes/snmp.inc.php @@ -355,6 +355,22 @@ function snmpwalk_cache_oid($device, $oid, $array, $mib = null, $mibdir = null, return $array; }//end snmpwalk_cache_oid() +function snmpwalk_cache_numerical_oid($device, $oid, $array, $mib = null, $mibdir = null, $snmpflags = '-OQUsn') +{ + $data = snmp_walk($device, $oid, $snmpflags, $mib, $mibdir); + foreach (explode("\n", $data) as $entry) { + list($oid,$value) = explode('=', $entry, 2); + $oid = trim($oid); + $value = trim($value); + list($index, $tmp_oid) = explode('.', strrev($oid), 2); + if (!strstr($value, 'at this OID') && isset($oid) && isset($index)) { + $array[$index][$oid] = $value; + } + } + + return $array; +}//end snmpwalk_cache_oid() + function snmpwalk_cache_long_oid($device, $oid, $noid, $array, $mib = null, $mibdir = null, $snmpflags = '-OQnU') { $data = snmp_walk($device, $oid, $snmpflags, $mib, $mibdir);