2007-04-08 14:33:42 +00:00
|
|
|
<?php
|
|
|
|
|
2015-07-13 20:10:26 +02:00
|
|
|
if ($device['os'] == "linux" || $device['os'] == "endian") {
|
2016-08-28 12:32:58 -05:00
|
|
|
list(,,$version) = explode(" ", $poll_device['sysDescr']);
|
2015-07-13 20:10:26 +02:00
|
|
|
if (strstr($poll_device['sysDescr'], "386")|| strstr($poll_device['sysDescr'], "486")||strstr($poll_device['sysDescr'], "586")||strstr($poll_device['sysDescr'], "686")) {
|
|
|
|
$hardware = "Generic x86";
|
2016-08-28 12:32:58 -05:00
|
|
|
} elseif (strstr($poll_device['sysDescr'], "x86_64")) {
|
2015-07-13 20:10:26 +02:00
|
|
|
$hardware = "Generic x86 64-bit";
|
2016-08-28 12:32:58 -05:00
|
|
|
} elseif (strstr($poll_device['sysDescr'], "sparc32")) {
|
2015-07-13 20:10:26 +02:00
|
|
|
$hardware = "Generic SPARC 32-bit";
|
2016-08-28 12:32:58 -05:00
|
|
|
} elseif (strstr($poll_device['sysDescr'], "sparc64")) {
|
2015-07-13 20:10:26 +02:00
|
|
|
$hardware = "Generic SPARC 64-bit";
|
2016-08-28 12:32:58 -05:00
|
|
|
} elseif (strstr($poll_device['sysDescr'], "mips")) {
|
2015-07-13 20:10:26 +02:00
|
|
|
$hardware = "Generic MIPS";
|
2016-08-28 12:32:58 -05:00
|
|
|
} // Except iDrac6 from being detected as armv5
|
|
|
|
elseif (strstr($poll_device['sysDescr'], "armv5") && $poll_device['sysObjectID'] != '.1.3.6.1.4.1.674.10892.2') {
|
2015-07-13 20:10:26 +02:00
|
|
|
$hardware = "Generic ARMv5";
|
2016-08-28 12:32:58 -05:00
|
|
|
} elseif (strstr($poll_device['sysDescr'], "armv6")) {
|
2015-07-13 20:10:26 +02:00
|
|
|
$hardware = "Generic ARMv6";
|
2016-08-28 12:32:58 -05:00
|
|
|
} elseif (strstr($poll_device['sysDescr'], "armv7")) {
|
2015-07-13 20:10:26 +02:00
|
|
|
$hardware = "Generic ARMv7";
|
2016-08-28 12:32:58 -05:00
|
|
|
} elseif (strstr($poll_device['sysDescr'], "armv")) {
|
2015-07-13 20:10:26 +02:00
|
|
|
$hardware = "Generic ARM";
|
|
|
|
}
|
2011-03-29 13:48:03 +00:00
|
|
|
|
2015-07-13 20:10:26 +02:00
|
|
|
# Distro "extend" support
|
2015-10-23 09:18:05 -07:00
|
|
|
|
|
|
|
# NET-SNMP-EXTEND-MIB::nsExtendOutput1Line.\"distro\"
|
2015-10-25 12:21:08 -07:00
|
|
|
$features = str_replace("\"", "", snmp_get($device, ".1.3.6.1.4.1.8072.1.3.2.3.1.1.6.100.105.115.116.114.111", "-Oqv", "NET-SNMP-EXTEND-MIB"));
|
2011-03-29 13:48:03 +00:00
|
|
|
|
2015-10-23 09:18:05 -07:00
|
|
|
if (!$features) { # No "extend" support, try legacy UCD-MIB shell support
|
2015-10-25 12:21:08 -07:00
|
|
|
$features = str_replace("\"", "", snmp_get($device, ".1.3.6.1.4.1.2021.7890.1.3.1.1.6.100.105.115.116.114.111", "-Oqv", "UCD-SNMP-MIB"));
|
2015-10-23 09:18:05 -07:00
|
|
|
}
|
|
|
|
|
2015-07-13 20:10:26 +02:00
|
|
|
if (!$features) { # No "extend" support, try "exec" support
|
2015-10-25 12:21:08 -07:00
|
|
|
$features = str_replace("\"", "", snmp_get($device, ".1.3.6.1.4.1.2021.7890.1.101.1", "-Oqv", "UCD-SNMP-MIB"));
|
2015-07-13 20:10:26 +02:00
|
|
|
}
|
2011-03-29 13:48:03 +00:00
|
|
|
|
2015-07-13 20:10:26 +02:00
|
|
|
# Detect Dell hardware via OpenManage SNMP
|
|
|
|
$hw = snmp_get($device, ".1.3.6.1.4.1.674.10892.1.300.10.1.9.1", "-Oqv", "MIB-Dell-10892");
|
|
|
|
$hw = trim(str_replace("\"", "", $hw));
|
|
|
|
if ($hw) {
|
|
|
|
$hardware = "Dell " . $hw;
|
2012-05-24 11:10:22 +00:00
|
|
|
}
|
|
|
|
|
2015-07-13 20:10:26 +02:00
|
|
|
$serial = snmp_get($device, ".1.3.6.1.4.1.674.10892.1.300.10.1.11.1", "-Oqv", "MIB-Dell-10892");
|
|
|
|
$serial = trim(str_replace("\"", "", $serial));
|
|
|
|
|
|
|
|
# Use agent DMI data if available
|
|
|
|
if (isset($agent_data['dmi'])) {
|
|
|
|
if ($agent_data['dmi']['system-product-name']) {
|
|
|
|
$hardware = ($agent_data['dmi']['system-manufacturer'] ? $agent_data['dmi']['system-manufacturer'] . ' ' : '') . $agent_data['dmi']['system-product-name'];
|
|
|
|
|
|
|
|
# Clean up "Dell Computer Corporation" and "Intel Corporation"
|
2016-08-28 12:32:58 -05:00
|
|
|
$hardware = str_replace(" Computer Corporation", "", $hardware);
|
|
|
|
$hardware = str_replace(" Corporation", "", $hardware);
|
2015-07-13 20:10:26 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
if ($agent_data['dmi']['system-serial-number']) {
|
|
|
|
$serial = $agent_data['dmi']['system-serial-number'];
|
|
|
|
}
|
2012-05-24 11:10:22 +00:00
|
|
|
}
|
2016-08-28 12:32:58 -05:00
|
|
|
} elseif ($device['os'] == "freebsd") {
|
2015-07-13 20:10:26 +02:00
|
|
|
$poll_device['sysDescr'] = str_replace(" 0 ", " ", $poll_device['sysDescr']);
|
2016-08-28 12:32:58 -05:00
|
|
|
list(,,$version) = explode(" ", $poll_device['sysDescr']);
|
2015-07-13 20:10:26 +02:00
|
|
|
if (strstr($poll_device['sysDescr'], "i386")) {
|
|
|
|
$hardware = "i386";
|
2016-08-28 12:32:58 -05:00
|
|
|
} elseif (strstr($poll_device['sysDescr'], "amd64")) {
|
2015-07-13 20:10:26 +02:00
|
|
|
$hardware = "amd64";
|
2016-08-28 12:32:58 -05:00
|
|
|
} else {
|
2015-07-13 20:10:26 +02:00
|
|
|
$hardware = "i386";
|
|
|
|
}
|
2015-09-27 17:27:59 +02:00
|
|
|
|
|
|
|
# Distro "extend" support
|
2015-10-25 12:21:08 -07:00
|
|
|
|
|
|
|
# NET-SNMP-EXTEND-MIB::nsExtendOutput1Line.\"distro\"
|
|
|
|
$features = str_replace("\"", "", snmp_get($device, ".1.3.6.1.4.1.8072.1.3.2.3.1.1.6.100.105.115.116.114.111", "-Oqv", "NET-SNMP-EXTEND-MIB"));
|
|
|
|
|
|
|
|
if (!$features) { # No "extend" support, try legacy UCD-MIB shell support
|
|
|
|
$features = str_replace("\"", "", snmp_get($device, ".1.3.6.1.4.1.2021.7890.1.3.1.1.6.100.105.115.116.114.111", "-Oqv", "UCD-SNMP-MIB"));
|
|
|
|
}
|
2015-09-27 17:27:59 +02:00
|
|
|
|
|
|
|
if (!$features) { # No "extend" support, try "exec" support
|
2015-10-25 12:21:08 -07:00
|
|
|
$features = str_replace("\"", "", snmp_get($device, ".1.3.6.1.4.1.2021.7890.1.101.1", "-Oqv", "UCD-SNMP-MIB"));
|
2015-09-27 17:27:59 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
if (!$features) {
|
|
|
|
$features = 'GENERIC';
|
|
|
|
}
|
2016-08-28 12:32:58 -05:00
|
|
|
} elseif ($device['os'] == "dragonfly") {
|
|
|
|
list(,,$version,,,$features,,$hardware) = explode(" ", $poll_device['sysDescr']);
|
|
|
|
} elseif ($device['os'] == "netbsd") {
|
|
|
|
list(,,$version,,,$features) = explode(" ", $poll_device['sysDescr']);
|
2015-07-13 20:10:26 +02:00
|
|
|
$features = str_replace("(", "", $features);
|
|
|
|
$features = str_replace(")", "", $features);
|
2016-08-28 12:32:58 -05:00
|
|
|
list(,,$hardware) = explode("$features", $poll_device['sysDescr']);
|
|
|
|
} elseif ($device['os'] == "openbsd" || $device['os'] == "solaris" || $device['os'] == "opensolaris") {
|
|
|
|
list(,,$version,$features,$hardware) = explode(" ", $poll_device['sysDescr']);
|
2015-07-13 20:10:26 +02:00
|
|
|
$features = str_replace("(", "", $features);
|
|
|
|
$features = str_replace(")", "", $features);
|
2016-08-28 12:32:58 -05:00
|
|
|
} elseif ($device['os'] == "monowall" || $device['os'] == "Voswall") {
|
2015-07-13 20:10:26 +02:00
|
|
|
list(,,$version,$hardware,$freebsda, $freebsdb, $arch) = explode(" ", $poll_device['sysDescr']);
|
|
|
|
$features = $freebsda . " " . $freebsdb;
|
|
|
|
$hardware = "$hardware ($arch)";
|
|
|
|
$hardware = str_replace("\"", "", $hardware);
|
2016-08-28 12:32:58 -05:00
|
|
|
} elseif ($device['os'] == "qnap") {
|
2015-07-13 20:10:26 +02:00
|
|
|
$hardware = snmp_get($device, "ENTITY-MIB::entPhysicalName.1", "-Osqnv");
|
|
|
|
$version = snmp_get($device, "ENTITY-MIB::entPhysicalFirmwareRev.1", "-Osqnv");
|
|
|
|
$serial = snmp_get($device, "ENTITY-MIB::entPhysicalSerial.1", "-Osqnv");
|
2016-08-28 12:32:58 -05:00
|
|
|
} elseif ($device['os'] == "dsm") {
|
2015-07-13 20:10:26 +02:00
|
|
|
# This only gets us the build, not the actual version number, so won't use this.. yet.
|
|
|
|
# list(,,,$version,) = explode(" ",$poll_device['sysDescr'],5);
|
|
|
|
# $version = "Build " . trim($version,'#');
|
2012-04-24 20:34:45 +00:00
|
|
|
|
2015-07-13 20:10:26 +02:00
|
|
|
$hrSystemInitialLoadParameters = trim(snmp_get($device, "hrSystemInitialLoadParameters.0", "-Osqnv"));
|
2012-04-24 20:34:45 +00:00
|
|
|
|
2016-08-28 12:32:58 -05:00
|
|
|
$options = explode(" ", $hrSystemInitialLoadParameters);
|
2012-04-24 20:34:45 +00:00
|
|
|
|
2015-07-13 20:10:26 +02:00
|
|
|
foreach ($options as $option) {
|
2016-08-28 12:32:58 -05:00
|
|
|
list($key,$value) = explode("=", $option, 2);
|
2015-07-13 20:10:26 +02:00
|
|
|
if ($key == "syno_hw_version") {
|
|
|
|
$hardware = $value;
|
|
|
|
}
|
|
|
|
}
|
2015-10-16 19:27:39 +00:00
|
|
|
|
|
|
|
$version = snmp_get($device, "version.0", "-Osqnv", "SYNOLOGY-SYSTEM-MIB");
|
2016-08-28 12:32:58 -05:00
|
|
|
} elseif ($device['os'] == "pfsense") {
|
2015-06-27 22:11:54 +01:00
|
|
|
$output = preg_split("/ /", $poll_device['sysDescr']);
|
|
|
|
$version = $output[2];
|
|
|
|
$hardware = $output[6];
|
2012-04-24 19:19:27 +00:00
|
|
|
}
|