#!/usr/local/bin/perl
###########################################
# nagios-check-nmap
# Mike Schilli, 2014 (m@perlmeister.com)
###########################################
use strict;
use Nagios::Clientstatus;

my $version = "0.01";
my $ncli    = Nagios::Clientstatus->new(
    help_subref    => 
      sub { print "usage: $0\n" },
    version        => $version,
    mandatory_args => 
      ['max-hosts', 'min-hosts'],
);

use JSON qw( from_json );
use LWP::UserAgent;

my $ua = LWP::UserAgent->new();
my $resp = 
  $ua->get( "http://localhost:9090" );

if( $resp->is_error() ) {
  die "failed: ", $resp->message();
}

my $data = 
  from_json( $resp->decoded_content() );

my $nhosts = scalar @{ $data->{ host } };

printf "Nmap found: %s\n", 
  join " ", 
    map { $_->{ address }->{ addr } } 
  @{ $data->{ host } };

my $max_hosts = 
  $ncli->get_given_arg('max-hosts');

my $min_hosts = 
  $ncli->get_given_arg('min-hosts');

if( $nhosts > $max_hosts or 
    $nhosts < $min_hosts ) {
    exit $ncli->exitvalue("critical");
}

exit $ncli->exitvalue("ok");
