Exemplo n.º 1
0
 *
 *   This file is part of Observium.
 *
 * @package    observium
 * @subpackage discovery
 * @author     Adam Armstrong <*****@*****.**>
 * @copyright  (C) 2006-2013 Adam Armstrong, (C) 2013-2016 Observium Limited
 *
 */
print_cli_data_field("Discovering MIBs", 3);
// Include all discovery modules by supported MIB
$include_dir = "includes/discovery/processors";
include "includes/include-dir-mib.inc.php";
// Detect processors by simple MIB-based discovery :
// FIXME - this should also be extended to understand multiple entries in a table, and take descr from an OID but this is all I need right now :)
foreach (get_device_mibs($device) as $mib) {
    if (is_array($config['mibs'][$mib]['processor'])) {
        echo "{$mib} ";
        foreach ($config['mibs'][$mib]['processor'] as $entry_name => $entry) {
            //echo($entry_name.' ');
            $entry['found'] = FALSE;
            if ($entry['type'] == 'table') {
                $processors_array = snmpwalk_cache_oid($device, $entry['table'], array(), $mib);
                if ($entry['table_descr']) {
                    // If descr in separate table with same indexes
                    $processors_array = snmpwalk_cache_oid($device, $entry['table_descr'], $processors_array, $mib);
                }
                $i = 1;
                // Used in descr as $i++
                foreach ($processors_array as $index => $processor) {
                    $dot_index = '.' . $index;
Exemplo n.º 2
0
function is_device_mib($device, $mib, $check_permissions = TRUE)
{
    global $config;
    $mib_permitted = in_array($mib, get_device_mibs($device));
    // Check if mib available for device
    if ($check_permissions && $mib_permitted && (!isset($config['mibs'][$mib]) || $config['mibs'][$mib])) {
        // Check if MIB permitted by config
        $mib_permitted = $mib_permitted && (!isset($config['mibs'][$mib]) || $config['mibs'][$mib]);
        // Check if MIB disabled by web interface or polling process
        $attribs = get_dev_attribs($device['device_id']);
        $mib_permitted = $mib_permitted && (!isset($attribs['mib_' . $mib]) || $attribs['mib_' . $mib] != 0);
    }
    return $mib_permitted;
}
Exemplo n.º 3
0
             $capabilities_mibs[$mib][] = $entry['sysORID'];
         } else {
             // This is just for info in output
             $capabilities_unused[$entry['sysORID']] = $mib;
         }
     }
 }
 // Skip walking the entire MIB array if the device has no response for sysORID
 if (count($advertised_mibs)) {
     if (OBS_DEBUG > 1) {
         print_vars($advertised_mibs);
         print_vars($capabilities_mibs);
     }
     unset($use_fastpath_new);
     // See below
     $device_mibs = get_device_mibs($device, FALSE);
     $device_mibs_bl = get_device_mibs_blacklist($device);
     // Cycle all known MIBs and see if the device reports supporting any of them
     $found_mibs = array();
     foreach ($config['mibs'] as $mib => $mibdata) {
         if (isset($mibdata['identity_num']) && !empty($mibdata['identity_num'])) {
             // Search sysORID in identies
             $identity_found = FALSE;
             $mibdata['identity_num'] = (array) $mibdata['identity_num'];
             // Convert to simple array
             foreach ($mibdata['identity_num'] as $identity_num) {
                 if ($identity_found = in_array($identity_num, $advertised_mibs)) {
                     $found_mibs = array_merge($found_mibs, $mibdata['identity_num']);
                     // Add all oids as found
                     break;
                 }
Exemplo n.º 4
0
    foreach ($config[$e] as $entry)
    {
      if (is_array($entry['mibs'])) { $detect_mibs = array_merge($detect_mibs, $entry['mibs']); }
    }
  }
  $config['os'][$device['os']]['mibs'] = array_unique($detect_mibs);
  var_dump($config['os'][$device['os']]['mibs']);
}
*/
// This is an include so that we don't lose variable scope.
$include_lib = isset($include_lib) && $include_lib;
if (!isset($include_order)) {
    // Order for include MIBs definitions, default: 'model,os,group,default'
    $include_order = NULL;
}
foreach (get_device_mibs($device, TRUE, $include_order) as $mib) {
    $inc_dir = $config['install_dir'] . '/' . $include_dir . '/' . strtolower($mib);
    $inc_file = $inc_dir . '.inc.php';
    if (is_device_mib($device, $mib)) {
        if (is_file($inc_file)) {
            echo "{$mib} ";
            include $inc_file;
            if ($include_lib && is_file($inc_dir . '.lib.php')) {
                // separated functions include, for exclude fatal redeclare errors
                include_once $inc_dir . '.lib.php';
            }
        } else {
            if (is_dir($inc_dir)) {
                if (OBS_DEBUG) {
                    echo "[[{$mib}]]";
                }
Exemplo n.º 5
0
 /**
  * @dataProvider providerGetDeviceMibsOrder
  * @group mibs
  */
 public function testGetDeviceMibsOrder($device, $order, $result)
 {
     $mibs = array_values(get_device_mibs($device, FALSE, $order));
     // Use array_values for reset keys
     $this->assertEquals($result, $mibs);
 }