#!/usr/bin/perl

use strict;
use Getopt::Std;
use Mon::Client;

my @opstrings= (
	"fail", "ok", "coldstart", "warmstart", "linkdown",
	"unknown", "timeout", "untested",
	);

my $usage= "montrap [-p port] [-r retval] -o opstatus -s summary [-d detail] host group:service\n";

use vars qw($opt_p $opt_r $opt_o $opt_s $opt_d);
getopts("p:r:o:s:d:");


die $usage unless @ARGV == 2 and $ARGV[1] =~ /[^:]+:[^:]+/;

my $host= $ARGV[0];
my ($group, $service)= $ARGV[1] =~ /^([^:]+):([^:]+)/;

my $port= $opt_p || 2583;
my $retval= $opt_r || 255;
my $opstatus= $opt_o || die "montrap: '-o opstatus' required\n";

die "montrap: unrecognized opstatus: $opstatus\n" unless
	grep $opstatus, @opstrings;


my $summary= $opt_s  || die "montrap: '-s summary' required\n";
my $detail= $opt_d || "";

my $mon;

	if (!defined ($mon = Mon::Client->new)) {
		die "$0: could not create client object: $@";
	}
	$mon->host($host);

        $mon->send_trap(
                group=> $group,
                service=> $service,
                retval=> $retval,
                opstatus=> $opstatus,
                summary=> $summary,
                detail => $detail,
                );

