60 lines
1020 B
Perl
60 lines
1020 B
Perl
|
#!/usr/bin/perl
|
||
|
|
||
|
use warnings;
|
||
|
|
||
|
use JSON;
|
||
|
use LWP::UserAgent;
|
||
|
use HTTP::Request;
|
||
|
|
||
|
use Getopt::Std;
|
||
|
|
||
|
sub init() {
|
||
|
my $opt_string = 'n:';
|
||
|
getopts("$opt_string");
|
||
|
our ( $opt_n );
|
||
|
}
|
||
|
|
||
|
init();
|
||
|
|
||
|
# Get sensu output
|
||
|
my $json = <>;
|
||
|
my $message = decode_json($json);
|
||
|
my $check_name = $message->{check}->{name};
|
||
|
my $client_name = $message->{client}->{name};
|
||
|
my @ch = $message->{check}->{history};
|
||
|
my @check_history;
|
||
|
foreach my $c (@ch) {
|
||
|
@check_history = @$c;
|
||
|
}
|
||
|
|
||
|
my $crit_count = 0;
|
||
|
my $total = @check_history;
|
||
|
foreach my $stat (@check_history) {
|
||
|
if ( $stat eq '2' ) {
|
||
|
$crit_count++;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
# sms.ru API
|
||
|
my $id = '';
|
||
|
my $num = '';
|
||
|
$num = $opt_n if $opt_n;
|
||
|
my $sms = "$client_name\n$check_name\n$crit_count";
|
||
|
|
||
|
my $uri = "http://sms.ru/sms/send?api_id=".$id."&to=".$num."&text=".$sms;
|
||
|
|
||
|
# Make request
|
||
|
my $ua = LWP::UserAgent->new();
|
||
|
$ua->agent('sensu-sms-handler/0.1');
|
||
|
|
||
|
my $req = HTTP::Request->new( POST => $uri );
|
||
|
my $res = $ua->request($req);
|
||
|
|
||
|
if ( $res->is_success ) {
|
||
|
exit 0;
|
||
|
}
|
||
|
else {
|
||
|
exit 7;
|
||
|
}
|
||
|
|