} $update = array_merge($update, $v3); $device_tmp = deviceArray($device['hostname'], $community, $snmpver, $port, $transport, $v3, $port_assoc_mode); if (isSNMPable($device_tmp)) { $rows_updated = dbUpdate($update, 'devices', '`device_id` = ?', array($device['device_id'])); $max_repeaters_set = false; $max_oid_set = false; if (is_numeric($max_repeaters) && $max_repeaters != 0) { set_dev_attrib($device, 'snmp_max_repeaters', $max_repeaters); $max_repeaters_set = true; } else { del_dev_attrib($device, 'snmp_max_repeaters'); $max_repeaters_set = true; } if (is_numeric($max_oid) && $max_oid != 0) { set_dev_attrib($device, 'snmp_max_oid', $max_oid); $max_oid_set = true; } else { del_dev_attrib($device, 'snmp_max_oid'); $max_oid_set = true; } if ($rows_updated > 0) { $update_message = $rows_updated . ' Device record updated.'; $updated = 1; } elseif ($rows_updated = '-1') { if ($max_repeaters_set === true || $max_repeaters_set === true) { if ($max_repeaters_set === true) { $update_message = 'SNMP Max repeaters updated, no other changes made'; } if ($max_oid_set === true) { $update_message .= '<br />SNMP Max OID updated, no other changes made';
* @author Adam Armstrong <*****@*****.**> * @copyright (C) 2006-2015 Adam Armstrong * */ if ($vars['editing']) { if ($_SESSION['userlevel'] > "7") { $agent_port = $vars['agent_port']; if ($agent_port == "") { del_dev_attrib($device, 'agent_port'); $updated = 1; $update_message = "代理设置更新."; } elseif (!is_numeric($agent_port)) { $update_message = "代理端口必须是数字!"; $updated = 0; } else { set_dev_attrib($device, 'agent_port', $agent_port); $updated = 1; $update_message = "代理设置更新."; } } } $device = dbFetchRow("SELECT * FROM `devices` WHERE `device_id` = ?", array($device['device_id'])); $descr = $device['purpose']; if ($updated && $update_message) { print_message($update_message); log_event('Device Agent configuration changed.', $device['device_id'], 'device', $device, 5); // severity 5, for logging user info } elseif ($update_message) { print_error($update_message); } ?>
$update['timeout'] = $timeout; } else { $update['timeout'] = array('NULL'); } if ($_POST['retries']) { $update['retries'] = $retries; } else { $update['retries'] = array('NULL'); } $update = array_merge($update, $v3); $device_tmp = deviceArray($device['hostname'], $community, $snmpver, $port, $transport, $v3, $port_assoc_mode); if (isSNMPable($device_tmp)) { $rows_updated = dbUpdate($update, 'devices', '`device_id` = ?', array($device['device_id'])); $max_repeaters_set = false; if (is_numeric($max_repeaters) && $max_repeaters != 0) { set_dev_attrib($device, 'snmp_max_repeaters', $max_repeaters); $max_repeaters_set = true; } else { del_dev_attrib($device, 'snmp_max_repeaters'); $max_repeaters_set = true; } if ($rows_updated > 0) { $update_message = $rows_updated . ' Device record updated.'; $updated = 1; } else { if ($rows_updated = '-1') { if ($max_repeaters_set === true) { $update_message = 'SNMP Max repeaters updated, no other changes made'; } else { $update_message = 'Device record unchanged. No update necessary.'; }
<?php /* * LibreNMS * * Copyright (c) 2015 Søren Friis Rosiak <*****@*****.**> * This program is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation, either version 3 of the License, or (at your * option) any later version. Please see LICENSE.txt at the top level of * the source code distribution for details. */ header('Content-type: application/json'); $status = 'error'; $message = 'unknown error'; $device_id = mres($_POST['device_id']); $port_id_notes = mres($_POST['port_id_notes']); $attrib_value = $_POST['notes']; if (isset($attrib_value) && set_dev_attrib(array('device_id' => $device_id), $port_id_notes, $attrib_value)) { $status = 'ok'; $message = 'Updated'; } else { $status = 'error'; $message = 'ERROR: Could not update'; } die(json_encode(array('status' => $status, 'message' => $message, 'attrib_type' => $port_id_notes, 'attrib_value' => $attrib_value, 'device_id' => $device_id)));
foreach ($config['os_group'] as $os => $data) { foreach ($data['mibs'] as $mib) { if (in_array($mib, array_keys($mibs)) === FALSE) { $other_mibs[$mib]++; } } } // Sort alphabetically ksort($other_mibs); $attribs = get_dev_attribs($device['device_id']); if ($_POST['toggle_mib'] && isset($mibs[$_POST['toggle_mib']])) { $mib = $_POST['toggle_mib']; if (isset($attribs['mib_' . $mib])) { del_dev_attrib($device, 'mib_' . $mib); } else { set_dev_attrib($device, 'mib_' . $mib, "0"); } $attribs = get_dev_attribs($device['device_id']); } print_message("This page allows you to disable certain MIBs to be polled for a device. This configuration disables all discovery modules using this MIB."); ?> <div class="row"> <!-- begin row --> <div class="col-md-6"> <!-- begin poller options --> <fieldset> <legend>Device MIBs</legend> </fieldset> <table class="table table-bordered table-striped table-condensed table-rounded">
echo " "; // Delete removed toners if ($debug) { echo "\n Checking ... \n"; print_r($valid_toner); } $sql = "SELECT * FROM toner WHERE device_id = '" . $device['device_id'] . "'"; if ($query = mysql_query($sql)) { while ($test_toner = mysql_fetch_assoc($query)) { $toner_index = $test_toner['toner_index']; $toner_type = $test_toner['toner_type']; if (!$valid_toner[$toner_type][$toner_index]) { echo "-"; mysql_query("DELETE FROM `toner` WHERE toner_id = '" . $test_toner['toner_id'] . "'"); log_event("Toner removed: type " . mres($toner_type) . " index " . mres($toner_index) . " descr " . mres($test_toner['toner_descr']), $device, 'toner', $test_toner['toner_id']); } } } unset($valid_toner); // Discover other counters and monitored values $pagecounters = array("1.3.6.1.2.1.43.10.2.1.4.1.1"); foreach ($pagecounters as $oid) { if (snmp_get($device, $oid, "-OUqnv")) { echo " Pagecounter"; set_dev_attrib($device, "pagecount_oid", $oid); break; } } echo "\n"; } # if ($config['enable_printers'])
echo 'EDAC '; foreach (explode("\n", $agent_data['edac']) as $line) { list($mc, $data) = explode(': ', $line, 2); // mc0: 0 Uncorrected Errors with no DIMM info if (preg_match("/^(.*) Uncorrected Errors with no DIMM info\$/", $data, $matches)) { $edac[$mc]['row']['unknown']['all']['ue'] = $matches[1]; } elseif (preg_match("/^(.*) Corrected Errors with no DIMM info\$/", $data, $matches)) { $edac[$mc]['row']['unknown']['all']['ce'] = $matches[1]; } elseif (preg_match("/^csrow(.*): (.*) Uncorrected Errors\$/", $data, $matches)) { $edac[$mc]['row'][$matches[1]]['all']['ue'] = $matches[2]; } elseif (preg_match("/^csrow(.*): (.*): (.*) Corrected Errors\$/", $data, $matches)) { $edac[$mc]['row'][$matches[1]][$matches[2]]['ce'] = $matches[3]; $edac_name[$mc]['rowname'][$matches[1]][$matches[2]] = $matches[2]; } } set_dev_attrib($device, 'edac_rownames', serialize($edac_name)); $graphs['edac_errors'] = TRUE; foreach ($edac as $mc => $data) { foreach ($data['row'] as $row => $channels) { foreach ($channels as $channel => $errors) { foreach (array('ce', 'ue') as $errortype) { if (isset($errors[$errortype])) { $row_id = $row === 'unknown' ? 'unknown' : "csrow{$row}"; // Yes, ===, otherwise PHP thinks unknown means 0. $rrd_filename = "edac-errors-{$mc}-{$row_id}-{$channel}-{$errortype}.rrd"; rrdtool_create($device, $rrd_filename, " \\\n DS:errors:GAUGE:600:0:125000000000 "); rrdtool_update($device, $rrd_filename, "N:" . $errors[$errortype]); } } } }
* Free Software Foundation, either version 3 of the License, or (at your * option) any later version. Please see LICENSE.txt at the top level of * the source code distribution for details. */ header('Content-type: application/json'); $status = 'error'; $descr = mres($_POST['descr']); $device_id = mres($_POST['device_id']); $ifName = mres($_POST['ifName']); $port_id = mres($_POST['port_id']); logfile($descr . ',' . $device_id . ',' . $ifName . ',' . $port_id); if (!empty($ifName) && is_numeric($port_id)) { // We have ifName and port id so update ifAlias if (empty($descr)) { $descr = 'repoll'; // Set to repoll so we avoid using ifDescr on port poll } if (dbUpdate(array('ifAlias' => $descr), 'ports', '`port_id`=?', array($port_id)) > 0) { $device = device_by_id_cache($device_id); if ($descr === 'repoll') { del_dev_attrib($device, 'ifName:' . $ifName); } else { set_dev_attrib($device, 'ifName:' . $ifName, 1); } $status = 'ok'; } else { $status = 'na'; } } $response = array('status' => $status); echo _json_encode($response);
} break; case 'wastetoner': $old_rrd = 'wastebox.rrd'; rename_rrd($device, $old_rrd, $supply_rrd); break; case 'fuser': $old_rrd = 'fuser.rrd'; rename_rrd($device, $old_rrd, $supply_rrd); break; } // END CLEANME echo $supplyperc . " %\n"; rrdtool_update_ng($device, 'toner', array('level' => $supplyperc), $supply['supply_index']); if ($supplyperc > $supply['supply_value']) { log_event('Printer supply ' . $supply['supply_descr'] . ' (type ' . nicecase($supply['supply_type']) . ') was replaced (new level: ' . $supplyperc . '%)', $device, 'toner', $supply['supply_id']); } dbUpdate(array('supply_value' => $supplyperc, 'supply_capacity' => $supply['supply_capacity']), 'printersupplies', '`supply_id` = ?', array($supply['supply_id'])); check_entity('printersupply', $supply, array('supply_value' => $supplyperc)); $graphs['printersupplies'] = TRUE; } // Old stuff, to replace? $oid = get_dev_attrib($device, 'pagecount_oid'); if ($oid) { echo "Checking page count... "; $pages = snmp_get($device, $oid, "-OUqnv"); set_dev_attrib($device, "pagecounter", $pages); rrdtool_update_ng($device, 'pagecount', array('pagecount' => $pages)); echo "{$pages}\n"; } // EOF
<?php /** * Observium * * This file is part of Observium. * * @package observium * @subpackage poller * @copyright (C) 2006-2013 Adam Armstrong, (C) 2013-2016 Observium Limited * */ $version = snmp_get($device, 'productVersion.0', '-Ovq', 'GEIST-V4-MIB'); $hardware = 'Geist ' . snmp_get($device, 'productTitle.0', '-Ovq', 'GEIST-V4-MIB'); $ra_url_http = snmp_get($device, 'productUrl.0', '-Ovq', 'GEIST-V4-MIB'); // Can be either STRING or IpAddress, check for leading http:// if (substr($ra_url_http, 0, 7) != 'http://') { $ra_url_http = "http://{$ra_url_http}"; } if ($ra_url_http != '') { set_dev_attrib($device, 'ra_url_http', $ra_url_http); } else { del_dev_attrib($device, 'ra_url_http'); } // EOF
<?php /** * Observium * * This file is part of Observium. * * @package observium * @subpackage poller * @copyright (C) 2006-2013 Adam Armstrong, (C) 2013-2016 Observium Limited * */ set_dev_attrib($device, 'poll_storage', 0); echo " Storage WMI: "; foreach ($wmi['disk']['logical'] as $disk) { echo "."; $storage_name = $disk['DeviceID'] . "\\\\ Label:" . $disk['VolumeName'] . " Serial Number " . strtolower($disk['VolumeSerialNumber']); $storage_id = dbFetchCell("SELECT `storage_id` FROM `storage` WHERE `storage_descr`= ?", array($storage_name)); $used = $disk['Size'] - $disk['FreeSpace']; $percent = round($used / $disk['Size'] * 100); rrdtool_update_ng($device, 'storage', array('used' => $used, 'free' => $disk['FreeSpace']), "host-resources-mib-" . $storage_name); dbUpdate(array('storage_polled' => time(), 'storage_used' => $used, 'storage_free' => $disk['FreeSpace'], 'storage_size' => $disk['Size'], 'storage_perc' => $percent), 'storage-state', '`storage_id` = ?', array($storage_id)); } echo PHP_EOL; // EOF
// eqlMemberName.1.1664046123 = hostname-2 $eqlgrpmembers = snmpwalk_cache_multi_oid($device, 'eqlMemberName', array(), 'EQLMEMBER-MIB'); foreach ($eqlgrpmembers as $index => $entry) { // Find member id and name in results if (!empty($entry['eqlMemberName']) && strtolower($entry['eqlMemberName']) == $poll_device['sysName']) { list(, $eqlgrpmemid) = explode('.', $index); break; } } if (!isset($eqlgrpmemid)) { // Fall-back to old method. $eqlgrpmemid = snmp_get($device, 'eqliscsiLocalMemberId.0', '-OQv', 'EQLVOLUME-MIB'); } if (is_numeric($eqlgrpmemid) && $eqlgrpmemid != $attribs['eqlgrpmemid']) { // Store member id when detected set_dev_attrib($device, 'eqlgrpmemid', $eqlgrpmemid); $attribs['eqlgrpmemid'] = $eqlgrpmemid; print_debug("\neqlgrpmemid: {$eqlgrpmemid}"); } // EQLMEMBER-MIB::eqlMemberProductFamily.1.$eqlgrpmemid = STRING: PS6500 // EQLMEMBER-MIB::eqlMemberControllerMajorVersion.1.$eqlgrpmemid = Gauge32: 6 // EQLMEMBER-MIB::eqlMemberControllerMinorVersion.1.$eqlgrpmemid = Gauge32: 0 // EQLMEMBER-MIB::eqlMemberControllerMaintenanceVersion.1.$eqlgrpmemid = Gauge32: 2 // EQLMEMBER-MIB::eqlMemberSerialNumber.1.$eqlgrpmemid = STRING: XXXNNNNNNNXNNNN // EQLMEMBER-MIB::eqlMemberServiceTag.1.$eqlgrpmemid = STRING: XXXXXXX $hardware = 'Dell EqualLogic ' . trim(snmp_get($device, 'eqlMemberProductFamily.1.' . $eqlgrpmemid, '-OQv', 'EQLMEMBER-MIB'), '" '); $serial = trim(snmp_get($device, 'eqlMemberSerialNumber.1.' . $eqlgrpmemid, '-OQv', 'EQLMEMBER-MIB'), '" '); $serial .= ' [' . trim(snmp_get($device, 'eqlMemberServiceTag.1.' . $eqlgrpmemid, '-OQv', 'EQLMEMBER-MIB'), '" ') . ']'; $eqlmajor = snmp_get($device, 'eqlMemberControllerMajorVersion.1.' . $eqlgrpmemid, '-OQv', 'EQLMEMBER-MIB'); $eqlminor = snmp_get($device, 'eqlMemberControllerMinorVersion.1.' . $eqlgrpmemid, '-OQv', 'EQLMEMBER-MIB'); $eqlmaint = snmp_get($device, 'eqlMemberControllerMaintenanceVersion.1.' . $eqlgrpmemid, '-OQv', 'EQLMEMBER-MIB');
$drums = array('Cyan' => 'c', 'Magenta' => 'm', 'Yellow' => 'y', 'Black' => 'k'); foreach ($drums as $drum => $letter) { $oid = get_dev_attrib($device, 'imagingdrum_' . $letter . '_oid'); if ($oid) { echo "Checking {$drum} Imaging Drum... "; $capacity = snmp_get($device, get_dev_attrib($device, 'imagingdrum_' . $letter . '_cap_oid'), '-OUqnv'); $level = round(snmp_get($device, $oid, "-OUqnv") / $capacity * 100); $drumrrd = "drum-" . $letter . ".rrd"; rrdtool_create($device, $drumrrd, " \\\n DS:drum:GAUGE:600:0:100 "); set_dev_attrib($device, "drum-" . $letter, $level); rrdtool_update($device, $drumrrd, "N:{$level}"); echo "{$level}%\n"; } } $levels = array('Waste Toner Box' => 'wastebox', 'Fuser' => 'fuser', 'Transfer roller' => 'transferroller'); foreach ($levels as $key => $value) { $oid = get_dev_attrib($device, $value . '_oid'); if ($oid) { echo "Checking {$key}... "; $capacity = snmp_get($device, get_dev_attrib($device, $value . '_cap_oid'), '-OUqnv'); $level = round(snmp_get($device, $oid, "-OUqnv") / $capacity * 100); $rrd = "{$value}.rrd"; rrdtool_create($device, $rrd, " \\\n DS:level:GAUGE:600:0:100 "); set_dev_attrib($device, $value, $level); rrdtool_update($device, $rrd, "N:{$level}"); echo "{$level}%\n"; } } } } // EOF
* under the terms of the GNU General Public License as published by the * Free Software Foundation, either version 3 of the License, or (at your * option) any later version. Please see LICENSE.txt at the top level of * the source code distribution for details. */ $status = 'error'; $descr = mres($_POST['descr']); $device_id = mres($_POST['device_id']); $ifName = mres($_POST['ifName']); $port_id = mres($_POST['port_id']); logfile($descr . ',' . $device_id . ',' . $ifName . ',' . $port_id); if (!empty($ifName) && is_numeric($port_id)) { // We have ifName and port id so update ifAlias if (empty($descr)) { $descr = 'repoll'; // Set to repoll so we avoid using ifDescr on port poll } if (dbUpdate(array('ifAlias' => $descr), 'ports', '`port_id`=?', array($port_id)) > 0) { $device = device_by_id_cache($device_id); if ($descr === 'repoll') { del_dev_attrib($device, 'ifName'); } else { set_dev_attrib($device, 'ifName', $ifName); } $status = 'ok'; } else { $status = 'na'; } } $response = array('status' => $status); echo _json_encode($response);
# [usedPercentage] => 96 # [freeBytes] => 673289601024 # [freePercentage] => 4 # [coldBytes] => 3762904182328 # [coldPercentageOfUsed] => 23 # [coldPercentageOfTotal] => 22 # [archiveBytes] => 11678769817966 # [selectedBytes] => 19313807393642 # [remainingBytes] => 379281681813 # [inboundBandwidth] => 53 # [outboundBandwidth] => 67 # [orgCount] => 1 # [userCount] => 83 # [computerCount] => 97 # [onlineComputerCount] => 27 # [backupSessionCount] => 0 foreach ($crashplan_data['data']['servers'] as $crashplan_server) { $crashplan_servers[] = $crashplan_server['serverName']; $rrd_filename = "app-crashplan-" . $crashplan_server['serverName'] . ".rrd"; unset($rrd_values); foreach (array('totalBytes', 'usedBytes', 'usedPercentage', 'freeBytes', 'freePercentage', 'coldBytes', 'coldPercentageOfUsed', 'coldPercentageOfTotal', 'archiveBytes', 'selectedBytes', 'remainingBytes', 'inboundBandwidth', 'outboundBandwidth', 'orgCount', 'userCount', 'computerCount', 'onlineComputerCount', 'backupSessionCount') as $key) { $rrd_values[] = is_numeric($crashplan_server[$key]) ? $crashplan_server[$key] : "U"; } rrdtool_create($device, $rrd_filename, " \\\n DS:totalBytes:GAUGE:600:0:125000000000 \\\n DS:usedBytes:GAUGE:600:0:125000000000 \\\n DS:usedPercentage:GAUGE:600:0:100 \\\n DS:freeBytes:GAUGE:600:0:125000000000 \\\n DS:freePercentage:GAUGE:600:0:100 \\\n DS:coldBytes:GAUGE:600:0:125000000000 \\\n DS:coldPctOfUsed:GAUGE:600:0:100 \\\n DS:coldPctOfTotal:GAUGE:600:0:100 \\\n DS:archiveBytes:GAUGE:600:0:125000000000 \\\n DS:selectedBytes:GAUGE:600:0:125000000000 \\\n DS:remainingBytes:GAUGE:600:0:125000000000 \\\n DS:inboundBandwidth:GAUGE:600:0:125000000000 \\\n DS:outboundBandwidth:GAUGE:600:0:125000000000 \\\n DS:orgCount:GAUGE:600:0:125000000000 \\\n DS:userCount:GAUGE:600:0:125000000000 \\\n DS:computerCount:GAUGE:600:0:125000000000 \\\n DS:onlineComputerCount:GAUGE:600:0:125000000000 \\\n DS:backupSessionCount:GAUGE:600:0:125000000000 "); rrdtool_update($device, $rrd_filename, "N:" . implode(':', $rrd_values)); } # Set list of servers as device attribute so we can use it in the web interface set_dev_attrib($device, 'crashplan_servers', json_encode($crashplan_servers)); } } // EOF
del_dev_attrib($device, 'poll_' . $module); } elseif ($config['poller_modules'][$_POST['toggle_poller']] == 0) { set_dev_attrib($device, 'poll_' . $module, "1"); } else { set_dev_attrib($device, 'poll_' . $module, "0"); } $attribs = get_dev_attribs($device['device_id']); } if ($_POST['toggle_discovery'] && isset($config['discovery_modules'][$_POST['toggle_discovery']])) { $module = mres($_POST['toggle_discovery']); if (isset($attribs['discover_' . $module]) && $attribs['discover_' . $module] != $config['discovery_modules'][$_POST['toggle_discovery']]) { del_dev_attrib($device, 'discover_' . $module); } elseif ($config['discovery_modules'][$_POST['toggle_discovery']] == 0) { set_dev_attrib($device, 'discover_' . $module, "1"); } else { set_dev_attrib($device, 'discover_' . $module, "0"); } $attribs = get_dev_attribs($device['device_id']); } ?> <div class="row-fluid"> <div class="row-fluid"> <div class="span6"> <fieldset> <legend>Poller Modules</legend> </fieldset> <table class="table table-bordered table-striped table-condensed table-rounded"> <thead>
if (!empty($ifName) && is_numeric($port_id) && is_numeric($port_id)) { // We have ifName and port id so update ifAlias if (empty($speed)) { $speed = array('NULL'); $high_speed = array('NULL'); // Set to 999999 so we avoid using ifDescr on port poll } else { $high_speed = $speed / 1000000; } if (dbUpdate(array('ifSpeed' => $speed, 'ifHighSpeed' => $high_speed), 'ports', '`port_id`=?', array($port_id)) > 0) { $device = device_by_id_cache($device_id); if (is_array($speed)) { del_dev_attrib($device, 'ifSpeed:' . $ifName); log_event("{$ifName} Port speed cleared manually", $device, 'interface', $port_id); } else { set_dev_attrib($device, 'ifSpeed:' . $ifName, 1); log_event("{$ifName} Port speed set manually: {$speed}", $device, 'interface', $port_id); $port_tune = get_dev_attrib($device, 'ifName_tune:' . $ifName); $device_tune = get_dev_attrib($device, 'override_rrdtool_tune'); if ($port_tune == "true" || $device_tune == "true" && $port_tune != 'false' || $config['rrdtool_tune'] == "true" && $port_tune != 'false' && $device_tune != 'false') { $rrdfile = get_port_rrdfile_path($device['hostname'], $port_id); rrdtool_tune('port', $rrdfile, $speed); } } $status = 'ok'; } else { $status = 'na'; } } $response = array('status' => $status); echo _json_encode($response);
} else { $override_sysContact_bool = $vars['override_sysContact']; if (isset($vars['sysContact'])) { $override_sysContact_string = $vars['sysContact']; } $disable_notify = $vars['disable_notify']; if ($override_sysContact_bool) { set_dev_attrib($device, 'override_sysContact_bool', '1'); } else { del_dev_attrib($device, 'override_sysContact_bool'); } if (isset($override_sysContact_string)) { set_dev_attrib($device, 'override_sysContact_string', $override_sysContact_string); } if ($disable_notify) { set_dev_attrib($device, 'disable_notify', '1'); } else { del_dev_attrib($device, 'disable_notify'); } // 2019-12-05 23:30:00 if (isset($vars['ignore_until']) && $vars['ignore_until_enable']) { $update['ignore_until'] = $vars['ignore_until']; $device['ignore_until'] = $vars['ignore_until']; } else { $update['ignore_until'] = array('NULL'); $device['ignore_until'] = ''; } dbUpdate($update, 'devices', '`device_id` = ?', array($device['device_id'])); $update_message = "Device alert settings updated."; $updated = 1; }
} if (!empty($wmi_password)) { set_dev_attrib($device, 'wmi_password', $wmi_password); } else { del_dev_attrib($device, 'wmi_password'); } $update_message = "Device WMI data updated."; $updated = 1; if ($vars['toggle_poller'] && isset($GLOBALS['config']['wmi']['modules'][$vars['toggle_poller']])) { $module = $vars['toggle_poller']; if (isset($attribs['wmi_poll_' . $module]) && $attribs['wmi_poll_' . $module] != $GLOBALS['config']['wmi']['modules'][$vars['toggle_poller']]) { del_dev_attrib($device, 'wmi_poll_' . $module); } elseif ($GLOBALS['config']['wmi']['modules'][$vars['toggle_poller']] == 0) { set_dev_attrib($device, 'wmi_poll_' . $module, "1"); } else { set_dev_attrib($device, 'wmi_poll_' . $module, "0"); } $attribs = get_dev_attribs($device['device_id']); } } } ?> <script type="text/javascript"> $(document).ready(function() { toggleDisable(); $("#wmi_override").change(function() { toggleDisable(); }); });
<?php if (is_admin() === false) { die('ERROR: You need to be admin'); } // FUA $device['device_id'] = $_POST['device_id']; $module = 'poll_' . $_POST['poller_module']; if (!isset($module) && validate_device_id($device['device_id']) === false) { echo 'error with data'; exit; } else { if ($_POST['state'] == 'true') { $state = 1; } else { if ($_POST['state'] == 'false') { $state = 0; } else { $state = 0; } } if (isset($attribs['poll_' . $module]) && $attribs['poll_' . $module] != $config['poller_modules'][$module]) { del_dev_attrib($device, $module); } else { set_dev_attrib($device, $module, $state); } }
* Copyright (c) 2014 Neil Lathwood <https://github.com/laf/ http://www.lathwood.co.uk> * * This program is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation, either version 3 of the License, or (at your * option) any later version. Please see LICENSE.txt at the top level of * the source code distribution for details. */ if (is_admin() === false) { $response = array('status' => 'error', 'message' => 'Need to be admin'); echo _json_encode($response); exit; } $device['device_id'] = mres($_POST['device_id']); $attrib = mres($_POST['attrib']); $state = mres($_POST['state']); $status = 'error'; $message = 'Error with config'; if (empty($device['device_id'])) { $message = 'No device passed'; } else { if ($state == true) { set_dev_attrib($device, $attrib, $state); } else { del_dev_attrib($device, $attrib); } $status = 'ok'; $message = 'Config has been updated'; } $response = array('status' => $status, 'message' => $message); echo _json_encode($response);
if ($_SESSION['userlevel'] > '7') { $ipmi_hostname = mres($_POST['ipmi_hostname']); $ipmi_username = mres($_POST['ipmi_username']); $ipmi_password = mres($_POST['ipmi_password']); if ($ipmi_hostname != '') { set_dev_attrib($device, 'ipmi_hostname', $ipmi_hostname); } else { del_dev_attrib($device, 'ipmi_hostname'); } if ($ipmi_username != '') { set_dev_attrib($device, 'ipmi_username', $ipmi_username); } else { del_dev_attrib($device, 'ipmi_username'); } if ($ipmi_password != '') { set_dev_attrib($device, 'ipmi_password', $ipmi_password); } else { del_dev_attrib($device, 'ipmi_password'); } $update_message = 'Device IPMI data updated.'; $updated = 1; } else { include 'includes/error-no-perm.inc.php'; } //end if } //end if if ($updated && $update_message) { print_message($update_message); } else { if ($update_message) {
// We are interrested in equallogic group members (devices), not in the group // find group member id. $eqlgrpmembers = snmp_walk($device, "eqlMemberName", "-OsqU", "EQLMEMBER-MIB", mib_dirs("equallogic")); $eqlgrpmembers = explode("\n", $eqlgrpmembers); // eqlMemberName.1.443914937 hostname-1 // eqlMemberName.1.1664046123 hostname-2 foreach ($eqlgrpmembers as $eqlgrpmem) { // Find member id and name in results preg_match('/^eqlMemberName\\.[0-9]+\\.([0-9]+) (.*)$/', $eqlgrpmem, $store); if (isset($store[2]) && strtolower($store[2]) == $poll_device['sysName']) { $eqlgrpmemid = $store[1]; } } if (isset($eqlgrpmemid)) { // Store member id when detected set_dev_attrib($device, "eqlgrpmemid", $eqlgrpmemid); print "\neqlgrpmemid: {$eqlgrpmemid}\n"; } else { // Fall-back to old method. $eqlgrpmemid = snmp_get($device, "eqliscsiLocalMemberId.0", "-OQv", "EQLVOLUME-MIB", mib_dirs("equallogic")); } // EQLMEMBER-MIB::eqlMemberProductFamily.1.$eqlgrpmemid = STRING: PS6500 // EQLMEMBER-MIB::eqlMemberControllerMajorVersion.1.$eqlgrpmemid = Gauge32: 6 // EQLMEMBER-MIB::eqlMemberControllerMinorVersion.1.$eqlgrpmemid = Gauge32: 0 // EQLMEMBER-MIB::eqlMemberControllerMaintenanceVersion.1.$eqlgrpmemid = Gauge32: 2 // EQLMEMBER-MIB::eqlMemberSerialNumber.1.$eqlgrpmemid = STRING: XXXNNNNNNNXNNNN // EQLMEMBER-MIB::eqlMemberServiceTag.1.$eqlgrpmemid = STRING: XXXXXXX $hardware = "Dell EqualLogic " . trim(snmp_get($device, "eqlMemberProductFamily.1." . $eqlgrpmemid, "-OQv", "EQLMEMBER-MIB", mib_dirs("equallogic")), '" '); $serial = trim(snmp_get($device, "eqlMemberSerialNumber.1." . $eqlgrpmemid, "-OQv", "EQLMEMBER-MIB", mib_dirs("equallogic")), '" '); $serial .= ' [' . trim(snmp_get($device, "eqlMemberServiceTag.1." . $eqlgrpmemid, "-OQv", "EQLMEMBER-MIB", mib_dirs("equallogic")), '" ') . ']'; $eqlmajor = snmp_get($device, "eqlMemberControllerMajorVersion.1." . $eqlgrpmemid, "-OQv", "EQLMEMBER-MIB", mib_dirs("equallogic"));
if ($_SESSION['userlevel'] > "7") { $updated = 0; $override_sysLocation_bool = $vars['override_sysLocation']; if (isset($vars['sysLocation'])) { $override_sysLocation_string = $vars['sysLocation']; } if (get_dev_attrib($device, 'override_sysLocation_bool') != $override_sysLocation_bool || get_dev_attrib($device, 'override_sysLocation_string') != $override_sysLocation_string) { $updated = 2; } if ($override_sysLocation_bool) { set_dev_attrib($device, 'override_sysLocation_bool', '1'); } else { del_dev_attrib($device, 'override_sysLocation_bool'); } if (isset($override_sysLocation_string)) { set_dev_attrib($device, 'override_sysLocation_string', $override_sysLocation_string); } # FIXME needs more sanity checking! and better feedback # FIXME -- update location too? Need to trigger geolocation! $param = array('purpose' => $vars['descr'], 'type' => $vars['type'], 'ignore' => $vars['ignore'], 'disabled' => $vars['disabled']); $rows_updated = dbUpdate($param, 'devices', '`device_id` = ?', array($device['device_id'])); if ($rows_updated > 0 || $updated) { if ((bool) $vars['ignore'] != (bool) $device['ignore']) { log_event('设备 ' . ((bool) $vars['ignore'] ? 'ignored' : 'attended') . ': ' . $device['hostname'], $device['device_id'], 'device', $device['device_id'], 5); } if ((bool) $vars['disabled'] != (bool) $device['disabled']) { log_event('设备 ' . ((bool) $vars['disabled'] ? 'disabled' : 'enabled') . ': ' . $device['hostname'], $device['device_id'], 'device'); } $update_message = "设备更新的记录."; if ($updated == 2) { $update_message .= " 请注意, 最新的系统位置字符串将在轮询后可见.";
del_dev_attrib($device, 'ipmi_password'); } if (is_numeric($vars['ipmi_port'])) { set_dev_attrib($device, 'ipmi_port', $vars['ipmi_port']); } else { del_dev_attrib($device, 'ipmi_port'); } // We check interface & userlevel input from the dropdown against the allowed values in the definition array. if ($vars['ipmi_interface'] != '' && array_search($vars['ipmi_interface'], array_keys($config['ipmi']['interfaces'])) !== FALSE) { set_dev_attrib($device, 'ipmi_interface', $vars['ipmi_interface']); } else { del_dev_attrib($device, 'ipmi_interface'); print_error('Invalid interface specified (' . $vars['ipmi_interface'] . ').'); } if ($vars['ipmi_userlevel'] != '' && array_search($vars['ipmi_userlevel'], array_keys($config['ipmi']['userlevels'])) !== FALSE) { set_dev_attrib($device, 'ipmi_userlevel', $vars['ipmi_userlevel']); } else { del_dev_attrib($device, 'ipmi_userlevel'); print_error('Invalid user level specified (' . $vars['ipmi_userlevel'] . ').'); } $update_message = "Device IPMI data updated."; $updated = 1; } else { include "includes/error-no-perm.inc.php"; } } if ($updated && $update_message) { print_message($update_message); } elseif ($update_message) { print_error($update_message); }
<?php // IPMI - We can discover this on poll! if ($ipmi['host'] = get_dev_attrib($device, 'ipmi_hostname')) { echo 'IPMI : '; $ipmi['user'] = get_dev_attrib($device, 'ipmi_username'); $ipmi['password'] = get_dev_attrib($device, 'ipmi_password'); if ($config['own_hostname'] != $device['hostname'] || $ipmi['host'] != 'localhost') { $remote = " -H " . $ipmi['host'] . " -U '" . $ipmi['user'] . "' -P '" . $ipmi['password'] . "' -L USER"; } foreach ($config['ipmi']['type'] as $ipmi_type) { $results = external_exec($config['ipmitool'] . " -I {$ipmi_type}" . $remote . ' sensor 2>/dev/null|sort'); if ($results != '') { set_dev_attrib($device, 'ipmi_type', $ipmi_type); break; } } echo $ipmi_type; $index = 0; foreach (explode("\n", $results) as $sensor) { // BB +1.1V IOH | 1.089 | Volts | ok | na | 1.027 | 1.054 | 1.146 | 1.177 | na list($desc, $current, $unit, $state, $low_nonrecoverable, $low_limit, $low_warn, $high_warn, $high_limit, $high_nonrecoverable) = explode('|', $sensor); $index++; if (trim($current) != 'na' && $config['ipmi_unit'][trim($unit)]) { discover_sensor($valid['sensor'], $config['ipmi_unit'][trim($unit)], $device, trim($desc), $index, 'ipmi', trim($desc), '1', '1', trim($low_limit) == 'na' ? null : trim($low_limit), trim($low_warn) == 'na' ? null : trim($low_warn), trim($high_warn) == 'na' ? null : trim($high_warn), trim($high_limit) == 'na' ? null : trim($high_limit), $current, 'ipmi'); } } echo "\n"; } check_valid_sensors($device, 'voltage', $valid['sensor'], 'ipmi'); check_valid_sensors($device, 'temperature', $valid['sensor'], 'ipmi');
set_dev_attrib($device, 'ipmi_username', $ipmi_username); } else { del_dev_attrib($device, 'ipmi_username'); } if ($ipmi_password != '') { set_dev_attrib($device, 'ipmi_password', $ipmi_password); } else { del_dev_attrib($device, 'ipmi_password'); } if ($ipmi_interface != '') { set_dev_attrib($device, 'ipmi_interface', $ipmi_interface); } else { del_dev_attrib($device, 'ipmi_interface'); } if (is_numeric($ipmi_port)) { set_dev_attrib($device, 'ipmi_port', $ipmi_port); } else { del_dev_attrib($device, 'ipmi_port'); } $update_message = "Device IPMI data updated."; $updated = 1; } else { include "includes/error-no-perm.inc.php"; } } if ($updated && $update_message) { print_message($update_message); } elseif ($update_message) { print_error($update_message); } ?>