Hi,
I have a problem to capture specific return value for OID Name ethL1IFCrntPMTempValue which it return 3 value for each transceiver port.
Below are my coding on folder named temperature.
<?php
$oids = snmpwalk_cache_multi_oid($device, 'ethL1IFCrntPMTempValue', [], 'BTI-7000-MIB', null, '-OQUbs');
d_echo($oids . "\n");
$divisor = '1';
$multiplier = '1';
$search_word = 'min15';
if($oids) {
echo 'BTI PVX XCVR Temperature ' . "\n";
foreach ($oids as $index => $data) {
$temperature_oid = '.1.3.6.1.4.1.18070.2.2.1.6.26.1.12.' . $index . '.3';
$descr = 'Gig :' . $index;
$current = snmp_get($device, $temperature_oid, '-Oqv', 'BTI-7000-MIB', '/opt/librenms/mibs/bti7060');
if (is_numeric($current)) {
discover_sensor($valid['sensor'],
'temperature',
$device,
$temperature_oid,
'ethL1IFCrntPMTempValue.' . $index,
'bti pvx',
$descr,
$divisor,
$multiplier,
null,
null,
null,
null,
$current,
'snmp',
null,
null,
null
);
}
}
}
However, the return value contain string which I cannot capture the specific OID. Below are logs when I run ./discovery.php
Temperature:
SNMP['/usr/bin/snmpbulkwalk' '-v2c' '-c' 'COMMUNITY' '-OQUs' '-m' 'BTI-7000-MIB' '-M' '/opt/librenms/mibs:/opt/librenms/mibs/bti7060' 'udp:HOSTNAME:161' 'ethL1IFCrntPMTempValue']
Temperature:
SNMP['/usr/bin/snmpbulkwalk' '-v2c' '-c' 'COMMUNITY' '-OQUbs' '-m' 'BTI-7000-MIB' '-M' '/opt/librenms/mibs:/opt/librenms/mibs/bti7060' 'udp:HOSTNAME:161' 'ethL1IFCrntPMTempValue']
ethL1IFCrntPMTempValue.*.1 = 32
ethL1IFCrntPMTempValue.*.2 = 32
ethL1IFCrntPMTempValue.*.3 = 32
ethL1IFCrntPMTempValue.*.1 = 30
ethL1IFCrntPMTempValue.*.2 = 30
ethL1IFCrntPMTempValue.*.3 = 30
ethL1IFCrntPMTempValue.*.1 = 31
ethL1IFCrntPMTempValue.*.2 = 31
ethL1IFCrntPMTempValue.*.3 = 31
ethL1IFCrntPMTempValue.*.1 = 29
ethL1IFCrntPMTempValue.*.2 = 29
ethL1IFCrntPMTempValue.*.3 = 29
ethL1IFCrntPMTempValue.*.1 = 29
ethL1IFCrntPMTempValue.*.2 = 29
ethL1IFCrntPMTempValue.*.3 = 29
ethL1IFCrntPMTempValue.*.1 = 37
ethL1IFCrntPMTempValue.*.2 = 37
ethL1IFCrntPMTempValue.*.3 = 37
ethL1IFCrntPMTempValue.*.1 = 38
ethL1IFCrntPMTempValue.*.2 = 38
ethL1IFCrntPMTempValue.*.3 = 38
ethL1IFCrntPMTempValue.*.1 = 32
ethL1IFCrntPMTempValue.*.2 = 32
ethL1IFCrntPMTempValue.*.3 = 32
Below are my snmpwalk:
iso.3.6.1.4.1.18070.2.2.1.6.26.1.12.1.1.1.1.1 = INTEGER: 32
iso.3.6.1.4.1.18070.2.2.1.6.26.1.12.1.1.1.1.2 = INTEGER: 32
iso.3.6.1.4.1.18070.2.2.1.6.26.1.12.1.1.1.1.3 = INTEGER: 32
iso.3.6.1.4.1.18070.2.2.1.6.26.1.12.1.1.1.2.1 = INTEGER: 30
iso.3.6.1.4.1.18070.2.2.1.6.26.1.12.1.1.1.2.2 = INTEGER: 30
iso.3.6.1.4.1.18070.2.2.1.6.26.1.12.1.1.1.2.3 = INTEGER: 30
iso.3.6.1.4.1.18070.2.2.1.6.26.1.12.1.1.1.3.1 = INTEGER: 31
iso.3.6.1.4.1.18070.2.2.1.6.26.1.12.1.1.1.3.2 = INTEGER: 31
iso.3.6.1.4.1.18070.2.2.1.6.26.1.12.1.1.1.3.3 = INTEGER: 31
iso.3.6.1.4.1.18070.2.2.1.6.26.1.12.1.1.1.10.1 = INTEGER: 30
iso.3.6.1.4.1.18070.2.2.1.6.26.1.12.1.1.1.10.2 = INTEGER: 30
iso.3.6.1.4.1.18070.2.2.1.6.26.1.12.1.1.1.10.3 = INTEGER: 30
iso.3.6.1.4.1.18070.2.2.1.6.26.1.12.1.1.1.22.1 = INTEGER: 29
iso.3.6.1.4.1.18070.2.2.1.6.26.1.12.1.1.1.22.2 = INTEGER: 29
iso.3.6.1.4.1.18070.2.2.1.6.26.1.12.1.1.1.22.3 = INTEGER: 29
iso.3.6.1.4.1.18070.2.2.1.6.26.1.12.1.1.2.1.1 = INTEGER: 37
iso.3.6.1.4.1.18070.2.2.1.6.26.1.12.1.1.2.1.2 = INTEGER: 37
iso.3.6.1.4.1.18070.2.2.1.6.26.1.12.1.1.2.1.3 = INTEGER: 37
iso.3.6.1.4.1.18070.2.2.1.6.26.1.12.1.1.2.2.1 = INTEGER: 38
iso.3.6.1.4.1.18070.2.2.1.6.26.1.12.1.1.2.2.2 = INTEGER: 38
iso.3.6.1.4.1.18070.2.2.1.6.26.1.12.1.1.2.2.3 = INTEGER: 38
iso.3.6.1.4.1.18070.2.2.1.6.26.1.12.1.1.2.3.1 = INTEGER: 32
iso.3.6.1.4.1.18070.2.2.1.6.26.1.12.1.1.2.3.2 = INTEGER: 32
iso.3.6.1.4.1.18070.2.2.1.6.26.1.12.1.1.2.3.3 = INTEGER: 32
For this, I require to capture OID which last number is .3 or .untimed in order to capture the current temperature.
Really appreciate by solving this.
Many thanks.