+++ /dev/null
-#!/usr/bin/env perl
-
-use strict;
-use Getopt::Std;
-$| = 1;
-
-my %opts;
-getopts('hr:C:c:s:o:', \%opts);
-
-my $STATE_OK = 0;
-my $STATE_WARNING = 1;
-my $STATE_CRITICAL = 2;
-my $STATE_UNKNOWN = 3;
-
-if ($opts{'h'} || scalar(%opts) == 0) {
- &print_help();
- exit($STATE_OK);
-}
-
-my $command = $opts{'c'};
-if ($command eq '') {
- print "You must provide a command to check.\n";
- exit($STATE_UNKNOWN);
-}
-
-my $expected_output = $opts{'o'};
-my $expected_status = $opts{'s'};
-my $other_command = $opts{'C'};
-
-if ($other_command eq '' and $expected_status eq '' and $expected_output eq '') {
- $expected_status = 0;
-}
-
-my $cmd = $command . ' 2>&1';
-my $other_cmd;
-if ($other_command ne '') {
- $other_cmd = $other_command . ' 2>&1';
-}
-
-my $run_as;
-if ($opts{'r'}) {
- $run_as = $opts{'r'};
- $cmd = "sudo -u $run_as -n $cmd";
-
- if ($other_command ne '') {
- $other_cmd = "sudo -u $run_as -n $other_cmd";
- }
-
-}
-
-my $cmd_result = `$cmd`;
-my $other_cmd_result;
-if ($other_command ne '') {
- $other_cmd_result = `$other_cmd`;
- chomp($other_cmd_result);
-}
-
-chomp($cmd_result);
-if ($cmd_result =~ /sudo/i) {
- print "$command CRITICAL - No sudo right to run the command | result=1;;;;\n";
- exit($STATE_UNKNOWN);
-} elsif ($expected_status ne '') {
- if ($? != $expected_status) {
- print "$command CRITICAL - Response status $? | result=1;;;;\n";
- exit($STATE_CRITICAL);
- } else {
- print "$command OK - Response status $? | result=0;;;;\n";
- exit($STATE_OK);
- }
-} elsif ($other_command ne '') {
- if ($cmd_result ne $other_cmd_result) {
- print "$command CRITICAL - Expected output not matching other command output | result=1;;;;\n";
- exit($STATE_CRITICAL);
- } else {
- print "$command OK - Expected output matching other command output | result=0;;;;\n";
- exit($STATE_OK);
- }
-} else {
- if ($cmd_result !~ /$expected_output/) {
- print "$command CRITICAL - Expected output not matching | result=1;;;;\n";
- exit($STATE_CRITICAL);
- } else {
- print "$command OK - Expected output matching | result=0;;;;\n";
- exit($STATE_OK);
- }
-}
-
-sub print_help() {
- print << "EOF";
-Check whether the given command responds as expected. One of -o -C or -s must be selected.
-
-Options:
--h
- Print detailed help screen
-
--c
- command to run (required)
-
--C
- other command to compare output
-
--r user
- Run as user via sudo.
-
--s
- status code to check
-
--o
- output to check
-
-EOF
-}
-