diff options
Diffstat (limited to 'examples/inspect')
-rwxr-xr-x | examples/inspect | 115 |
1 files changed, 115 insertions, 0 deletions
diff --git a/examples/inspect b/examples/inspect new file mode 100755 index 0000000..beebc17 --- /dev/null +++ b/examples/inspect @@ -0,0 +1,115 @@ +#!/bin/sh +#! -*-perl-*- +eval 'exec perl -x -S $0 ${1+"$@"}' + if 0; + +=head1 NAME + +inspect - inspect the Ping903 daemon configuration + +=head1 SYNOPSIS + +B<inspect> +[B<-U> I<URL>] +[B<--url>=I<URL>] + +=head1 DESCRIPTION + +Queries the running B<ping903> instance and displays its configuration on +standard output. + +=head1 OPTIONS + +=head2 General options + +=over 4 + +=item B<-U>, B<--url>=I<URL> + +URL of the running L<ping903> daemon. Default is C<http://localhost:8080>. + +=back + +=head2 Informative options + +=over 4 + +=item B<-?> + +Display short help summary. + +=item B<--usage> + +Display command line usage summary. + +=item B<--help> + +Display a detailed program manual. + +=back + +=head1 SEE ALSO + +L<ping903>, +L<DBI>. + +=cut + +use strict; +use warnings; +use LWP::UserAgent; +use JSON; +use Getopt::Long qw(:config gnu_getopt no_ignore_case); +use Pod::Usage; +use Pod::Man; + +my $baseurl = 'http://localhost:8080'; + +GetOptions( + 'U|url=s' => \$baseurl, + 'help' => sub { + pod2usage(-exitstatus => 0, -verbose => 2); + }, + 'usage' => sub { + pod2usage(-exitstatus => 0, -verbose => 0); + }, + 'hh|?' => sub { + pod2usage(-message => "dbload - load IP addresses to ping903", + -exitstatus => 0); + }, +) or exit(1); +die "too many arguments; try `$0 --help' for more info\n" if @ARGV; + +my $ua = new LWP::UserAgent; +my $response = $ua->get("$baseurl/config"); +unless ($response->is_success) { + die $response->status_line; +} + +my $resp = JSON->new->decode($response->decoded_content); +foreach my $kw (grep { $_ ne 'ip-list' } sort keys %$resp) { + my $val = $resp->{$kw} or next; + if (ref($val) eq 'ARRAY') { + foreach my $sv (@$val) { + print "$kw $sv\n"; + } + } else { + print "$kw "; + if (JSON::is_bool($val)) { + print $val ? "on" : "off"; + } else { + print $val + } + print "\n"; + } +} + +if (@{$resp->{'ip-list'}}) { + print "ip-list <<EOF\n"; + foreach my $ip (@{$resp->{'ip-list'}}) { + print " $ip\n"; + } + print "EOF\n"; +} + + |