#!/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");