Fix #725
This commit is contained in:
parent
8cdb9c3fad
commit
a14367a9f3
|
@ -32,46 +32,46 @@ sub new {
|
||||||
bless $self, $class;
|
bless $self, $class;
|
||||||
|
|
||||||
$self->{version} = '1.0';
|
$self->{version} = '1.0';
|
||||||
$options{options}->add_options(arguments =>
|
$options{options}->add_options(arguments => {
|
||||||
{
|
'oid:s' => { name => 'oid' },
|
||||||
"oid:s" => { name => 'oid' },
|
'oid-leef:s' => { name => 'oid_leef' },
|
||||||
"oid-leef:s" => { name => 'oid_leef' },
|
'oid-table:s' => { name => 'oid_table' },
|
||||||
"oid-table:s" => { name => 'oid_table' },
|
'oid-instance:s' => { name => 'oid_instance' },
|
||||||
"oid-instance:s" => { name => 'oid_instance' },
|
'filter-table-value:s' => { name => 'filter_table_value' },
|
||||||
"filter-table-value:s" => { name => 'filter_table_value' },
|
'filter-table-instance:s' => { name => 'filter_table_instance' },
|
||||||
"filter-table-instance:s" => { name => 'filter_table_instance' },
|
|
||||||
|
'warning-regexp:s' => { name => 'warning_regexp' },
|
||||||
"warning-regexp:s" => { name => 'warning_regexp' },
|
'critical-regexp:s' => { name => 'critical_regexp' },
|
||||||
"critical-regexp:s" => { name => 'critical_regexp' },
|
'unknown-regexp:s' => { name => 'unknown_regexp' },
|
||||||
"unknown-regexp:s" => { name => 'unknown_regexp' },
|
'regexp-isensitive' => { name => 'use_iregexp' },
|
||||||
"regexp-isensitive" => { name => 'use_iregexp' },
|
|
||||||
|
'warning-absent:s@' => { name => 'warning_absent' },
|
||||||
"warning-absent:s@" => { name => 'warning_absent' },
|
'critical-absent:s@' => { name => 'critical_absent' },
|
||||||
"critical-absent:s@" => { name => 'critical_absent' },
|
'unknown-absent:s@' => { name => 'unknown_absent' },
|
||||||
"unknown-absent:s@" => { name => 'unknown_absent' },
|
'warning-present:s@' => { name => 'warning_present' },
|
||||||
"warning-present:s@" => { name => 'warning_present' },
|
'critical-present:s@' => { name => 'critical_present' },
|
||||||
"critical-present:s@" => { name => 'critical_present' },
|
'unknown-present:s@' => { name => 'unknown_present' },
|
||||||
"unknown-present:s@" => { name => 'unknown_present' },
|
|
||||||
|
'format-ok:s' => { name => 'format_ok', default => '%{filter_rows} value(s)' },
|
||||||
"format-ok:s" => { name => 'format_ok', default => '%{filter_rows} value(s)' },
|
'format-warning:s' => { name => 'format_warning', default => 'value(s): %{details_warning}' },
|
||||||
"format-warning:s" => { name => 'format_warning', default => 'value(s): %{details_warning}' },
|
'format-critical:s' => { name => 'format_critical', default => 'value(s): %{details_critical}' },
|
||||||
"format-critical:s" => { name => 'format_critical', default => 'value(s): %{details_critical}' },
|
'format-unknown:s' => { name => 'format_unknown', default => 'value(s): %{details_unknown}' },
|
||||||
"format-unknown:s" => { name => 'format_unknown', default => 'value(s): %{details_unknown}' },
|
|
||||||
|
'format-details-ok:s' => { name => 'format_details_ok', default => '%{value}' },
|
||||||
"format-details-ok:s" => { name => 'format_details_ok', default => '%{value}' },
|
'format-details-warning:s' => { name => 'format_details_warning', default => '%{value}' },
|
||||||
"format-details-warning:s" => { name => 'format_details_warning', default => '%{value}' },
|
'format-details-critical:s' => { name => 'format_details_critical', default => '%{value}' },
|
||||||
"format-details-critical:s" => { name => 'format_details_critical', default => '%{value}' },
|
'format-details-unknown:s' => { name => 'format_details_unknown', default => '%{value}' },
|
||||||
"format-details-unknown:s" => { name => 'format_details_unknown', default => '%{value}' },
|
|
||||||
|
'format-details-separator-ok:s' => { name => 'format_details_separator_ok', default => ', ' },
|
||||||
"format-details-separator-ok:s" => { name => 'format_details_separator_ok', default => ', ' },
|
'format-details-separator-warning:s' => { name => 'format_details_separator_warning', default => ', ' },
|
||||||
"format-details-separator-warning:s" => { name => 'format_details_separator_warning', default => ', ' },
|
'format-details-separator-critical:s' => { name => 'format_details_separator_critical', default => ', ' },
|
||||||
"format-details-separator-critical:s" => { name => 'format_details_separator_critical', default => ', ' },
|
'format-details-separator-unknown:s' => { name => 'format_details_separator_unknown', default => ', ' },
|
||||||
"format-details-separator-unknown:s" => { name => 'format_details_separator_unknown', default => ', ' },
|
|
||||||
|
'map-values:s' => { name => 'map_values' },
|
||||||
"map-values:s" => { name => 'map_values' },
|
'map-value-other:s' => { name => 'map_value_other' },
|
||||||
"map-value-other:s" => { name => 'map_value_other' },
|
'map-values-separator:s' => { name => 'map_values_separator', default => ',' },
|
||||||
"map-values-separator:s" => { name => 'map_values_separator', default => ',' },
|
'convert-custom-values:s' => { name => 'convert_custom_values' },
|
||||||
});
|
});
|
||||||
|
|
||||||
$self->{macros} = { ok => {}, warning => {}, critical => {}, unknown => {} };
|
$self->{macros} = { ok => {}, warning => {}, critical => {}, unknown => {} };
|
||||||
return $self;
|
return $self;
|
||||||
|
@ -84,7 +84,7 @@ sub check_options {
|
||||||
$self->{option_results}->{oid_leef} = $self->{option_results}->{oid} if (defined($self->{option_results}->{oid}) && $self->{option_results}->{oid} ne '');
|
$self->{option_results}->{oid_leef} = $self->{option_results}->{oid} if (defined($self->{option_results}->{oid}) && $self->{option_results}->{oid} ne '');
|
||||||
if ((!defined($self->{option_results}->{oid_leef}) || $self->{option_results}->{oid_leef} eq '') &&
|
if ((!defined($self->{option_results}->{oid_leef}) || $self->{option_results}->{oid_leef} eq '') &&
|
||||||
(!defined($self->{option_results}->{oid_table}) || $self->{option_results}->{oid_table} eq '')) {
|
(!defined($self->{option_results}->{oid_table}) || $self->{option_results}->{oid_table} eq '')) {
|
||||||
$self->{output}->add_option_msg(short_msg => "Need to specify an OID with option --oid-leef or --oid-table.");
|
$self->{output}->add_option_msg(short_msg => 'Need to specify an OID with option --oid-leef or --oid-table.');
|
||||||
$self->{output}->option_exit();
|
$self->{output}->option_exit();
|
||||||
}
|
}
|
||||||
foreach (('oid_leef', 'oid_table', 'oid_instance')) {
|
foreach (('oid_leef', 'oid_table', 'oid_instance')) {
|
||||||
|
@ -111,7 +111,7 @@ sub get_instance_value {
|
||||||
return $self->{results}->{$self->{option_results}->{oid_instance} . '.' . $options{instance}};
|
return $self->{results}->{$self->{option_results}->{oid_instance} . '.' . $options{instance}};
|
||||||
}
|
}
|
||||||
|
|
||||||
sub get_map_value {
|
sub get_change_value {
|
||||||
my ($self, %options) = @_;
|
my ($self, %options) = @_;
|
||||||
|
|
||||||
my $value = $options{value};
|
my $value = $options{value};
|
||||||
|
@ -121,7 +121,11 @@ sub get_map_value {
|
||||||
} elsif (defined($self->{option_results}->{map_value_other}) && $self->{option_results}->{map_value_other} ne '') {
|
} elsif (defined($self->{option_results}->{map_value_other}) && $self->{option_results}->{map_value_other} ne '') {
|
||||||
$value = $self->{option_results}->{map_value_other};
|
$value = $self->{option_results}->{map_value_other};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (defined($self->{option_results}->{convert_custom_values}) && $self->{option_results}->{convert_custom_values} ne '') {
|
||||||
|
eval "\$value = $self->{option_results}->{convert_custom_values}";
|
||||||
|
}
|
||||||
|
|
||||||
return $value;
|
return $value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -133,7 +137,7 @@ sub get_snmp_values {
|
||||||
$self->{results} = $self->{snmp}->get_leef(oids => [$self->{option_results}->{oid_leef}], nothing_quit => 1);
|
$self->{results} = $self->{snmp}->get_leef(oids => [$self->{option_results}->{oid_leef}], nothing_quit => 1);
|
||||||
$self->{macros}->{rows} = 1;
|
$self->{macros}->{rows} = 1;
|
||||||
$self->{macros}->{filter_rows} = 1;
|
$self->{macros}->{filter_rows} = 1;
|
||||||
$self->{instances}->{0} = $self->get_map_value(value => $self->{results}->{$self->{option_results}->{oid_leef}});
|
$self->{instances}->{0} = $self->get_change_value(value => $self->{results}->{$self->{option_results}->{oid_leef}});
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -146,8 +150,8 @@ sub get_snmp_values {
|
||||||
|
|
||||||
$row++;
|
$row++;
|
||||||
my $instance = $self->get_instance_value(instance => $1);
|
my $instance = $self->get_instance_value(instance => $1);
|
||||||
my $value = $self->get_map_value(value => $self->{results}->{$_});
|
my $value = $self->get_change_value(value => $self->{results}->{$_});
|
||||||
$self->{output}->output_add(long_msg => sprintf("[instance: %s][value: %s]", $_, $value), debug => 1);
|
$self->{output}->output_add(long_msg => sprintf('[instance: %s][value: %s]', $_, $value), debug => 1);
|
||||||
if (defined($self->{option_results}->{filter_table_value}) && $self->{option_results}->{filter_table_value} ne '' &&
|
if (defined($self->{option_results}->{filter_table_value}) && $self->{option_results}->{filter_table_value} ne '' &&
|
||||||
$value !~ /$self->{option_results}->{filter_table_value}/) {
|
$value !~ /$self->{option_results}->{filter_table_value}/) {
|
||||||
$self->{output}->output_add(long_msg => sprintf("skipping oid '%s' value '%s': not matching the filter", $_, $value), debug => 1);
|
$self->{output}->output_add(long_msg => sprintf("skipping oid '%s' value '%s': not matching the filter", $_, $value), debug => 1);
|
||||||
|
@ -378,6 +382,11 @@ Use to transform an integer value not defined in --map-values option.
|
||||||
|
|
||||||
Separator uses between values (default: coma).
|
Separator uses between values (default: coma).
|
||||||
|
|
||||||
|
=item B<--convert-custom-values>
|
||||||
|
|
||||||
|
Custom code to convert values.
|
||||||
|
Example to convert octetstring to macaddress: --convert-custom-values='join(":", unpack("(H2)*", $value))'
|
||||||
|
|
||||||
=back
|
=back
|
||||||
|
|
||||||
=cut
|
=cut
|
||||||
|
|
Loading…
Reference in New Issue