152 lines
7.4 KiB
PHP
152 lines
7.4 KiB
PHP
<?php
|
|
|
|
/**
|
|
* Observium
|
|
*
|
|
* This file is part of Observium.
|
|
*
|
|
* @package observium
|
|
* @subpackage poller
|
|
* @copyright (C) Adam Armstrong
|
|
*
|
|
*/
|
|
|
|
// Stats for S-Series
|
|
|
|
#F10-S-SERIES-CHASSIS-MIB::chStackUnitModelID.1 = STRING: S25-01-GE-24V
|
|
#F10-S-SERIES-CHASSIS-MIB::chStackUnitStatus.1 = INTEGER: ok(1)
|
|
#F10-S-SERIES-CHASSIS-MIB::chStackUnitDescription.1 = STRING: 24-port E/FE/GE with POE (SB)
|
|
#F10-S-SERIES-CHASSIS-MIB::chStackUnitCodeVersion.1 = STRING: 7.8.1.3
|
|
#F10-S-SERIES-CHASSIS-MIB::chStackUnitCodeVersionInFlash.1 = STRING:
|
|
#F10-S-SERIES-CHASSIS-MIB::chStackUnitSerialNumber.1 = STRING: DL2E9250002
|
|
#F10-S-SERIES-CHASSIS-MIB::chStackUnitUpTime.1 = Timeticks: (262804700) 30 days, 10:00:47.00
|
|
|
|
#chStackUnitCodeVersion.1 = 8.4.2.7
|
|
#chStackUnitProductOrder.1 = .........................
|
|
#chStackUnitProductOrder.1 = <FF><FF><FF><FF><FF><FF><FF><FF><FF><FF><FF><FF><FF><FF><FF><FF><FF><FF><FF><FF><FF><FF><FF><FF><FF>
|
|
#chStackUnitModelID.1 = S25-01-GE-24T
|
|
#chStackUnitSerialNumber.1 = DL2D8430012
|
|
#chStackUnitServiceTag.1 =
|
|
|
|
// Stats for C-Series
|
|
|
|
#F10-C-SERIES-CHASSIS-MIB::chType.0 = INTEGER: c300(7)
|
|
#F10-C-SERIES-CHASSIS-MIB::chChassisMode.0 = INTEGER: cseries1(4)
|
|
#F10-C-SERIES-CHASSIS-MIB::chSwVersion.0 = STRING: 8.2.1.2
|
|
#F10-C-SERIES-CHASSIS-MIB::chMacAddr.0 = STRING: 0:1:e8:3b:ea:b5
|
|
#F10-C-SERIES-CHASSIS-MIB::chSerialNumber.0 = STRING: TY000000491
|
|
#F10-C-SERIES-CHASSIS-MIB::chPartNum.0 = STRING: 7520029900
|
|
#F10-C-SERIES-CHASSIS-MIB::chProductRev.0 = STRING: 04
|
|
#F10-C-SERIES-CHASSIS-MIB::chVendorId.0 = STRING: 04
|
|
#F10-C-SERIES-CHASSIS-MIB::chDateCode.0 = STRING: "01182007"
|
|
#F10-C-SERIES-CHASSIS-MIB::chCountryCode.0 = STRING: "01"
|
|
|
|
// Stats for E-Series
|
|
|
|
#F10-CHASSIS-MIB::chSysSwRuntimeImgVersion.1.1 = STRING: 7.6.1.2
|
|
#F10-CHASSIS-MIB::chSysSwRuntimeImgVersion.8.1 = STRING: 7.6.1.2
|
|
|
|
// Dell
|
|
#DELL-NETWORKING-CHASSIS-MIB::dellNetStackUnitModelId.1 = INTEGER: s4048on(36)
|
|
#DELL-NETWORKING-CHASSIS-MIB::dellNetStackUnitStatus.1 = INTEGER: ok(1)
|
|
#DELL-NETWORKING-CHASSIS-MIB::dellNetStackUnitDescription.1 = STRING: 54-port TE/FG (SK-ON)
|
|
#DELL-NETWORKING-CHASSIS-MIB::dellNetStackUnitCodeVersion.1 = STRING: 9.10(0.1)
|
|
#DELL-NETWORKING-CHASSIS-MIB::dellNetStackUnitSerialNumber.1 = STRING: NA
|
|
#DELL-NETWORKING-CHASSIS-MIB::dellNetStackUnitUpTime.1 = Timeticks: (62055300) 7 days, 4:22:33.00
|
|
|
|
// FIXME. Z-Series
|
|
|
|
// Detect base version, since 9.10 Dell changed base MIBs, but NOT changed devices sysObjectID
|
|
// for 9.10 and above set $is_dell to TRUE
|
|
$is_dell = FALSE;
|
|
if (preg_match('/Application Software Version:\s+(?<version>(?<base>[\d\.]+)\S*)\s+Series: +(?<hardware>\S+)/', $poll_device['sysDescr'], $matches)) {
|
|
//Dell Networking OS Operating System Version: 2.0 Application Software Version: 9.10(0.1P3) Series: S4810 Copyright (c) 1999-2016 by Dell Inc. All Rights Reserved. Build Time: Tue Jun 14 15:00:23 2016
|
|
//Dell Networking OS Operating System Version: 2.0 Application Software Version: 9.10(0.1) Series: S4048-ON Copyright (c) 1999-2016 by Dell Inc. All Rights Reserved. Build Time: Wed May 11 23:07:56 2016
|
|
//Dell Networking OS Operating System Version: 2.0 Application Software Version: 9.7(0.0P9) Series: S6000 Copyright (c) 1999-2015 by Dell Inc. All Rights Reserved. Build Time: Wed Jun 17 13:21:33 2015
|
|
//Dell Force10 OS Operating System Version: 1.0 Application Software Version: 8.4.2.7 Series: S25N Copyright (c) 1999-2012 by Dell Inc. All Rights Reserved. Build Time: Thu Sep 27 14:03:07 PDT 2012
|
|
$is_dell = version_compare($matches['base'], '9.10') >= 0;
|
|
|
|
$hardware = $matches['hardware'];
|
|
$version = $matches['version'];
|
|
} else {
|
|
$hardware = get_model_param($device, 'hardware', $poll_device['sysObjectID']);
|
|
}
|
|
|
|
if ($is_dell) {
|
|
// DELL-NETWORKING-CHASSIS-MIB::dellNetNumStackUnits.0 = INTEGER: 1
|
|
// DELL-NETWORKING-CHASSIS-MIB::dellNetStackUnitIndexNext.0 = INTEGER: 1
|
|
|
|
// YES, this not joke snmpwalk instead snmpget, since some Dell devices return wrong 'No Such Instance currently exists at this OID'
|
|
//$data = snmp_get_multi_oid($device, 'dellNetStackUnitCodeVersion.1 dellNetStackUnitProductOrder.1 dellNetStackUnitModelId.1 dellNetStackUnitSerialNumber.1 dellNetStackUnitServiceTag.1', array(), 'DELL-NETWORKING-CHASSIS-MIB');
|
|
$oids = ['dellNetStackUnitSerialNumber', 'dellNetStackUnitServiceTag'];
|
|
if (!$hardware) {
|
|
$oids[] = 'dellNetStackUnitProductOrder';
|
|
$oids[] = 'dellNetStackUnitModelId';
|
|
}
|
|
if (!$version) {
|
|
$oids[] = 'dellNetStackUnitCodeVersion';
|
|
}
|
|
$data = [];
|
|
foreach ($oids as $oid) {
|
|
$data = snmpwalk_cache_oid($device, $oid, $data, 'DELL-NETWORKING-CHASSIS-MIB');
|
|
}
|
|
if ($data[1]['dellNetStackUnitProductOrder'] && $data[1]['dellNetStackUnitProductOrder'] != 'NA' &&
|
|
strlen($data[1]['dellNetStackUnitProductOrder']) < 20) {
|
|
$hardware = $data[1]['dellNetStackUnitProductOrder'];
|
|
} elseif (!$hardware) {
|
|
$hardware = $data[1]['dellNetStackUnitModelId'];
|
|
}
|
|
if ($data[1]['dellNetStackUnitCodeVersion']) {
|
|
$version = $data[1]['dellNetStackUnitCodeVersion'];
|
|
}
|
|
if ($version) {
|
|
$icon = 'dell';
|
|
} // Switch icon to Dell
|
|
|
|
// Serial
|
|
if ($data[1]['dellNetStackUnitSerialNumber'] && $data[1]['dellNetStackUnitSerialNumber'] != 'NA') {
|
|
$serial = $data[1]['dellNetStackUnitSerialNumber'];
|
|
} else {
|
|
$serial = $data[1]['dellNetStackUnitServiceTag'];
|
|
}
|
|
} elseif (strstr($poll_device['sysObjectID'], '.1.3.6.1.4.1.6027.1.3.')) {
|
|
$data = snmp_get_multi_oid($device, 'chStackUnitCodeVersion.1 chStackUnitProductOrder.1 chStackUnitModelID.1 chStackUnitSerialNumber.1 chStackUnitServiceTag.1', [], 'F10-S-SERIES-CHASSIS-MIB');
|
|
if ($data[1]['chStackUnitProductOrder'] && !str_starts($data[1]['chStackUnitProductOrder'], ['NA', '.']) &&
|
|
preg_match('/^[A-Z]/', $data[1]['chStackUnitProductOrder'])) // This Oid can return unprintable chars
|
|
{
|
|
$hardware = $data[1]['chStackUnitProductOrder'];
|
|
} elseif (!$hardware) {
|
|
$hardware = $data[1]['chStackUnitModelID'];
|
|
}
|
|
$version = $data[1]['chStackUnitCodeVersion'];
|
|
|
|
// Serial
|
|
if ($data[1]['chStackUnitSerialNumber'] && $data[1]['chStackUnitSerialNumber'] != 'NA') {
|
|
$serial = $data[1]['chStackUnitSerialNumber'];
|
|
} else {
|
|
$serial = $data[1]['chStackUnitServiceTag'];
|
|
}
|
|
} elseif (strstr($poll_device['sysObjectID'], '.1.3.6.1.4.1.6027.1.2.')) {
|
|
$version = snmp_get($device, 'chSwVersion.0', '-Oqvn', 'F10-C-SERIES-CHASSIS-MIB');
|
|
$serial = snmp_get($device, 'chSerialNumber.0', '-Oqvn', 'F10-C-SERIES-CHASSIS-MIB');
|
|
} elseif (strstr($poll_device['sysObjectID'], '.1.3.6.1.4.1.6027.1.4.')) {
|
|
$data = snmp_get_multi_oid($device, 'chStackUnitCodeVersion.1 chStackUnitProductOrder.1 chStackUnitModelID.1 chStackUnitSerialNumber.1 chStackUnitServiceTag.1', [], 'F10-M-SERIES-CHASSIS-MIB');
|
|
if ($data[1]['chStackUnitProductOrder'] && $data[1]['chStackUnitProductOrder'] != 'NA') {
|
|
$hardware = $data[1]['chStackUnitProductOrder'];
|
|
} elseif (!$hardware) {
|
|
$hardware = $data[1]['chStackUnitModelID'];
|
|
}
|
|
$version = $data[1]['chStackUnitCodeVersion'];
|
|
if ($data[1]['chStackUnitSerialNumber'] && $data[1]['chStackUnitSerialNumber'] != 'NA') {
|
|
$serial = $data[1]['chStackUnitSerialNumber'];
|
|
} else {
|
|
$serial = $data[1]['chStackUnitServiceTag'];
|
|
}
|
|
} elseif (!$version) {
|
|
$version = snmp_get($device, 'chSysSwRuntimeImgVersion.1.1', '-Oqvn', 'F10-CHASSIS-MIB');
|
|
}
|
|
|
|
unset($data, $is_dell);
|
|
|
|
// EOF
|