Merge branch 'ent-9376-Discovery-SNMP-Host-Filtro-por-interfaces-no-operativas' into 'develop'

implemented option to skip inoperative interfaces on demand

See merge request artica/pandorafms!5149
This commit is contained in:
Daniel Rodriguez 2022-10-31 15:55:29 +00:00
commit 65048966bf
5 changed files with 35 additions and 3 deletions

View File

@ -1,5 +1,7 @@
START TRANSACTION;
ALTER TABLE `trecon_task` ADD COLUMN `snmp_skip_non_enabled_ifs` TINYINT UNSIGNED DEFAULT 1;
ALTER TABLE `tlayout` ADD COLUMN `maintenance_mode` TEXT;
ALTER TABLE `tusuario` ADD COLUMN `auth_token_secret` VARCHAR(45) DEFAULT NULL;

View File

@ -509,6 +509,7 @@ class HostDevices extends Wizard
$snmp_privacy_pass = get_parameter('snmp_privacy_pass', null);
$snmp_auth_method = get_parameter('snmp_auth_method', null);
$snmp_security_level = get_parameter('snmp_security_level', null);
$snmp_skip_non_enabled_ifs = get_parameter_switch('snmp_skip_non_enabled_ifs');
$auth_strings = get_parameter('auth_strings', []);
if ($snmp_version == 3) {
@ -556,6 +557,7 @@ class HostDevices extends Wizard
$this->task['snmp_privacy_pass'] = $snmp_privacy_pass;
$this->task['snmp_auth_method'] = $snmp_auth_method;
$this->task['snmp_security_level'] = $snmp_security_level;
$this->task['snmp_skip_non_enabled_ifs'] = $snmp_skip_non_enabled_ifs;
$this->task['auth_strings'] = '';
if (is_array($auth_strings) === true) {
$this->task['auth_strings'] = join(
@ -1215,6 +1217,24 @@ class HostDevices extends Wizard
],
];
$form['inputs'][] = [
'hidden' => 1,
'block_id' => 'snmp_options_skip_non_enabled_ifs',
'class' => 'indented',
'block_content' => [
[
'label' => __('Skip non-enabled interfaces'),
'arguments' => [
'name' => 'snmp_skip_non_enabled_ifs',
'type' => 'switch',
'value' => (isset($this->task['snmp_enabled']) === true) ? $this->task['snmp_skip_non_enabled_ifs'] : 1,
'size' => 25,
'return' => true,
],
],
],
];
// SNMP Options pack v1.
$form['inputs'][] = [
'hidden' => 1,
@ -1487,6 +1507,7 @@ class HostDevices extends Wizard
function SNMPExtraShow(target) {
$("#snmp_options_basic").hide();
$("#snmp_options_skip_non_enabled_ifs").hide();
$("#snmp_options_v3").hide();
if (document.getElementsByName("snmp_enabled")[0].checked) {
$("#snmp_extra").show();
@ -1494,6 +1515,7 @@ class HostDevices extends Wizard
$("#snmp_options_v3").show();
} else {
$("#snmp_options_basic").show();
$("#snmp_options_skip_non_enabled_ifs").show();
}
}
}
@ -1519,6 +1541,7 @@ class HostDevices extends Wizard
// Hide unusable sections
$("#snmp_extra").hide();
$("#snmp_options_basic").hide();
$("#snmp_options_skip_non_enabled_ifs").hide();
$("#snmp_options_v3").hide();
// Disable snmp dependant checks

View File

@ -874,6 +874,7 @@ CREATE TABLE IF NOT EXISTS `trecon_task` (
`summary` TEXT,
`type` INT NOT NULL DEFAULT 0,
`subnet_csv` TINYINT UNSIGNED DEFAULT 0,
`snmp_skip_non_enabled_ifs` TINYINT UNSIGNED DEFAULT 1,
PRIMARY KEY (`id_rt`),
KEY `recon_task_daemon` (`id_recon_server`)
) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4;

View File

@ -273,6 +273,7 @@ sub data_consumer ($$) {
snmp_security_level => $task->{'snmp_security_level'},
snmp_timeout => $task->{'snmp_timeout'},
snmp_version => $task->{'snmp_version'},
snmp_skip_non_enabled_ifs => $task->{'snmp_skip_non_enabled_ifs'},
subnets => \@subnets,
task_id => $task->{'id_rt'},
vlan_cache_enabled => $task->{'vlan_enabled'},
@ -723,9 +724,12 @@ sub PandoraFMS::Recon::Base::create_interface_modules($$) {
foreach my $if_index (@output) {
next unless ($if_index =~ /^[0-9]+$/);
# Check the status of the interface.
my $if_status = $self->snmp_get_value($device, "$PandoraFMS::Recon::Base::IFOPERSTATUS.$if_index");
next unless $if_status == 1;
if ($self->{'task_data'}{'snmp_skip_non_enabled_ifs'} == 1) {
# Check the status of the interface.
my $if_status = $self->snmp_get_value($device, "$PandoraFMS::Recon::Base::IFOPERSTATUS.$if_index");
next unless $if_status == 1;
}
# Fill the module description with the IP and MAC addresses.
my $mac = $self->get_if_mac($device, $if_index);

View File

@ -215,6 +215,7 @@ sub new {
snmp_security_level => '',
snmp_timeout => 2,
snmp_version => 1,
snmp_skip_non_enabled_ifs => 1,
subnets => [],
autoconfiguration_enabled => 0,
@ -312,6 +313,7 @@ sub new {
$self->{'snmp_privacy_method'} = '';
$self->{'snmp_privacy_pass'} = '';
$self->{'snmp_security_level'} = '';
$self->{'snmp_skip_non_enabled_ifs'} = '';
}
return $self;