(enh) double-dash support for arguments (#4151)
This commit is contained in:
parent
c00a652421
commit
a5d43fc0b4
|
@ -33,6 +33,7 @@ sub new {
|
||||||
$options{options}->add_options(arguments => {
|
$options{options}->add_options(arguments => {
|
||||||
'command:s' => { name => 'command' },
|
'command:s' => { name => 'command' },
|
||||||
'arg:s@' => { name => 'arg' },
|
'arg:s@' => { name => 'arg' },
|
||||||
|
'extra-args' => { name => 'extra_args' },
|
||||||
'sanitize-message:s' => { name => 'sanitize_message' }
|
'sanitize-message:s' => { name => 'sanitize_message' }
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -70,9 +71,12 @@ sub sanitize_message {
|
||||||
sub run {
|
sub run {
|
||||||
my ($self, %options) = @_;
|
my ($self, %options) = @_;
|
||||||
|
|
||||||
|
my @arg = defined($self->{option_results}->{arg}) ? @{$self->{option_results}->{arg}} : ();
|
||||||
|
push @arg, @{$self->{option_extras}} if ($self->{option_results}->{extra_args});
|
||||||
|
|
||||||
my $result = $options{custom}->request(
|
my $result = $options{custom}->request(
|
||||||
command => $self->{option_results}->{command},
|
command => $self->{option_results}->{command},
|
||||||
arg => $self->{option_results}->{arg}
|
arg => \@arg
|
||||||
);
|
);
|
||||||
|
|
||||||
$self->{output}->output_add(
|
$self->{output}->output_add(
|
||||||
|
@ -112,6 +116,13 @@ In nrpe use following command to get server version: --command='_NRPE_CHECK'
|
||||||
|
|
||||||
Set arguments (Multiple option. Example: --arg='arg1' --arg='arg2').
|
Set arguments (Multiple option. Example: --arg='arg1' --arg='arg2').
|
||||||
|
|
||||||
|
=item B<--extra-args>
|
||||||
|
|
||||||
|
Use extra arguments from command line (all values placed after a double-dash '--')
|
||||||
|
as additional "--arg" options for the NRPE command.
|
||||||
|
|
||||||
|
Example: --arg='arg1' --extra-args -- 'arg2' 'arg3' 'arg4'
|
||||||
|
|
||||||
=item B<--sanitize-message>
|
=item B<--sanitize-message>
|
||||||
|
|
||||||
Sanitize message by removing heading code and
|
Sanitize message by removing heading code and
|
||||||
|
|
|
@ -62,6 +62,15 @@ sub GetOptions {
|
||||||
if (defined($ARGV[$i]) && $ARGV[$i] =~ /^--(.*?)(?:=|$)((?s).*)/) {
|
if (defined($ARGV[$i]) && $ARGV[$i] =~ /^--(.*?)(?:=|$)((?s).*)/) {
|
||||||
my ($option, $value) = ($1, $2);
|
my ($option, $value) = ($1, $2);
|
||||||
|
|
||||||
|
# The special argument "--" forces an end of option-scanning.
|
||||||
|
# All arguments placed after are stored in a list with the special option key '_double_dash_'.
|
||||||
|
if ($option eq '' && $value eq '') {
|
||||||
|
my @values = splice @ARGV, $i + 1, $num_args - $i - 1;
|
||||||
|
push @{${$opts{'_double_dash_'}}}, @values;
|
||||||
|
splice @ARGV, $i, 1;
|
||||||
|
last;
|
||||||
|
}
|
||||||
|
|
||||||
# find type of option
|
# find type of option
|
||||||
if ($search_str !~ /,((?:[^,]*?\|){0,}$option(?:\|.*?){0,}(:.*?){0,1}),/) {
|
if ($search_str !~ /,((?:[^,]*?\|){0,}$option(?:\|.*?){0,}(:.*?){0,1}),/) {
|
||||||
warn "Unknown option: $option" if ($warn_message == 1);
|
warn "Unknown option: $option" if ($warn_message == 1);
|
||||||
|
|
|
@ -32,6 +32,7 @@ sub new {
|
||||||
$self->{perfdata} = centreon::plugins::perfdata->new(output => $options{output});
|
$self->{perfdata} = centreon::plugins::perfdata->new(output => $options{output});
|
||||||
|
|
||||||
%{$self->{option_results}} = ();
|
%{$self->{option_results}} = ();
|
||||||
|
@{$self->{option_extras}} = @{$options{options}->{extra_arguments}};
|
||||||
$self->{output} = $options{output};
|
$self->{output} = $options{output};
|
||||||
$self->{output}->use_new_perfdata(value => 1)
|
$self->{output}->use_new_perfdata(value => 1)
|
||||||
if (defined($options{force_new_perfdata}) && $options{force_new_perfdata} == 1);
|
if (defined($options{force_new_perfdata}) && $options{force_new_perfdata} == 1);
|
||||||
|
|
|
@ -37,6 +37,7 @@ sub new {
|
||||||
$self->{options} = {};
|
$self->{options} = {};
|
||||||
@{$self->{pod_package}} = ();
|
@{$self->{pod_package}} = ();
|
||||||
$self->{pod_packages_once} = {};
|
$self->{pod_packages_once} = {};
|
||||||
|
$self->{extra_arguments} = [];
|
||||||
|
|
||||||
if ($alternative == 0) {
|
if ($alternative == 0) {
|
||||||
require Getopt::Long;
|
require Getopt::Long;
|
||||||
|
@ -145,6 +146,9 @@ sub parse_options {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Store all arguments placed after the special argument "--" in the 'extra_arguments' list
|
||||||
|
$self->{options}->{'_double_dash_'} = \$self->{extra_arguments};
|
||||||
|
|
||||||
GetOptions(
|
GetOptions(
|
||||||
%{$self->{options}}
|
%{$self->{options}}
|
||||||
);
|
);
|
||||||
|
|
Loading…
Reference in New Issue