diff --git a/snmp/opensearch b/snmp/opensearch index 5b731b2eb..cac3d5093 100755 --- a/snmp/opensearch +++ b/snmp/opensearch @@ -31,11 +31,15 @@ Add this to snmpd.conf as below and restart snmpd. Supported command line options are as below. + -a Auth token path. + -c CA file path. + Default: empty -h The host to connect to. Default: 127.0.0.1 -p The port to use. Default: 9200 -P Pretty print. + -S Use HTTPS. The last is only really relevant to the usage with SNMP. @@ -55,25 +59,40 @@ sub main::VERSION_MESSAGE { sub main::HELP_MESSAGE { print "\n" + . "-a Auth token path.\n" + . "-c CA file path.\n" . "-h The host to connect to.\n" . " Default: 127.0.0.1\n" . "-p The port to use.\n" . " Default: 9200\n" - . "-P Pretty print.\n"; + . "-P Pretty print.\n" + . "-S Use HTTPS.\n"; } my $host = '127.0.0.1'; my $port = 9200; +my $schema = 'http'; #gets the options my %opts; -getopts( 'h:p:P', \%opts ); +getopts( 'a:c:h:p:P:S', \%opts ); if ( defined( $opts{h} ) ) { $host = $opts{h}; } if ( defined( $opts{p} ) ) { $port = $opts{p}; } +if ( $opts{S} ) { + $schema = 'https'; +} + +my $auth_token; +if ( defined( $opts{a} ) ) { + open my $auth_file, '<', $opts{a}; + $auth_token = <$auth_file>; + close $auth_file; + chop $auth_token; +} # my $to_return = { @@ -83,8 +102,8 @@ my $to_return = { date => {}, }; -my $stats_url = 'http://' . $host . ':' . $port . '/_stats'; -my $health_url = 'http://' . $host . ':' . $port . '/_cluster/health'; +my $stats_url = $schema . '://' . $host . ':' . $port . '/_stats'; +my $health_url = $schema . '://' . $host . ':' . $port . '/_cluster/health'; my $json = JSON->new->allow_nonref->canonical(1); if ( $opts{P} ) { @@ -93,7 +112,18 @@ if ( $opts{P} ) { my $ua = LWP::UserAgent->new( timeout => 10 ); -my $stats_response = $ua->get($stats_url); +if ( defined( $opts{c} ) ) { + # set ca file + $ua->ssl_opts( SSL_ca_file => $opts{c}); +} + +my $stats_response; +if ( defined( $opts{a} ) ) { + $stats_response = $ua->get($stats_url, "Authorization" => $auth_token,); +} else { + $stats_response = $ua->get($stats_url); +} + my $stats_json; if ( $stats_response->is_success ) { eval { $stats_json = decode_json( $stats_response->decoded_content ); }; @@ -117,7 +147,13 @@ else { exit; } -my $health_response = $ua->get($health_url); +my $health_response; +if ( defined( $opts{a} ) ) { + $health_response = $ua->get($health_url, "Authorization" => $auth_token,); +} else { + $health_response = $ua->get($health_url); +} + my $health_json; if ( $health_response->is_success ) { eval { $health_json = decode_json( $health_response->decoded_content ); };