submit-via-nsca.pl
changeset 5 3ce1738b5b5c
parent 4 f773a81fcff5
equal deleted inserted replaced
4:f773a81fcff5 5:3ce1738b5b5c
     1 #! /usr/bin/perl
     1 #! /usr/bin/perl
     2 # © 2011 Heiko Schlittermann <hs@schlittermann.de>
     2 # © 2011 Heiko Schlittermann <hs@schlittermann.de>
     3 # source: https://ssl.schlittermann.de/hg/check-by-nsca
     3 # source: https://ssl.schlittermann.de/hg/check-by-nsca
     4 
       
     5 
     4 
     6 use strict;
     5 use strict;
     7 use warnings;
     6 use warnings;
     8 use Sys::Hostname;
     7 use Sys::Hostname;
     9 use File::Basename;
     8 use File::Basename;
    40             );
    39             );
    41         },
    40         },
    42         "d|debug" => \$o{debug},
    41         "d|debug" => \$o{debug},
    43     ) or pod2usage();
    42     ) or pod2usage();
    44 
    43 
    45     my $cmdline =
    44     my $cmdline = "send_nsca -H '$o{nsca_host}'"
    46         "send_nsca -H '$o{nsca_host}'" 
    45       . (defined $o{nsca_port} ? " -p $o{nsca_port}" : "");
    47         . (defined $o{nsca_port} ? " -p $o{nsca_port}" : "");
       
    48 
    46 
    49     $_ = `@ARGV`;
    47     $_ = `@ARGV`;
    50     my $rc = $?;
    48     my $rc = $? >> 8;
    51 
    49 
    52     if ($o{svcname} eq "-") {
    50     if ($o{svcname} eq "-") {
    53         /^(?<service>\S+)\s/ or die "$ME: Can't guess servicename!\n";
    51         /^(?<service>\S+)\s/ or die "$ME: Can't guess servicename!\n";
    54         $o{svcname} = $+{service};
    52         $o{svcname} = $+{service};
    55     }
    53     }
    56     $_ = join "\t" => $o{hostname}, length($o{svcname}) ? $o{svcname} : (), $_;
    54     $_ =
       
    55       join "\t" => $o{hostname},
       
    56       length($o{svcname})
       
    57       ? $o{svcname}
       
    58       : (), $rc, $_;
    57 
    59 
    58     if ($o{debug}) {
    60     if ($o{debug}) {
    59         print $cmdline, "\n$_\n";
    61         print $cmdline, "\n$_\n";
    60         exit;
    62         exit;
    61     }
    63     }
    62 
    64 
    63     open(SEND, "|$cmdline") or die "$ME: Can't open `$cmdline': $!\n";
    65     open(SEND, "|$cmdline") or die "$ME: Can't open `$cmdline': $!\n";
    64     print SEND $_;
    66     print SEND $_;
    65     close(SEND)
    67     close(SEND)
    66         or die  $! ? "$ME: Error closing `$cmdline': $!\n"
    68       or die $!
    67                    : "$ME: Error status from `$cmdline': $?\n";
    69       ? "$ME: Error closing `$cmdline': $!\n"
       
    70       : "$ME: Error status from `$cmdline': $?\n";
    68 
    71 
    69 }
    72 }
    70 
    73 
    71 __END__
    74 __END__
    72 
    75