the-bastion/contrib/nrpe/probes/bastion-locked
2022-02-09 14:31:33 +01:00

60 lines
1.5 KiB
Perl
Executable file

#! /usr/bin/env perl
# vim: set filetype=perl ts=4 sw=4 sts=4 et:
#
# DESC: Warn if bastion is locked (/home encrypted)
use strict;
use warnings;
use File::Basename;
use Getopt::Long;
my $PROBE_NAME = basename($0);
my $debug;
## no critic (Subroutines::RequireArgUnpacking)
## no critic (Subroutines::RequireFinalReturn)
sub _out {
my ($criticity, $msg) = @_;
printf "%s %4s - %s\n", $PROBE_NAME, $criticity, $msg;
}
sub _dbg { _out('dbg', $_[0]) if $debug; }
sub _info { _out('info', $_[0]); }
sub _warn { _out('WARN', $_[0]); }
sub _err { _out('ERR!', $_[0]); }
sub success { my $msg = shift; _info($msg) if $msg; _info("status=OK"); exit(0); }
sub warning { my $msg = shift; _warn($msg) if $msg; _info("status=WARN"); exit(1); }
sub failure { my $msg = shift; _err($msg) if $msg; _info("status=FAILURE"); exit(2); }
sub unknown { my $msg = shift; _err($msg) if $msg; _info("status=UNKNOWN"); exit(3); }
# OPTIONS
GetOptions(
"help" => \my $help,
"debug!" => \$debug,
) or unknown("Failed parsing command-line");
# HELP
if ($help) {
print <<"EOF";
$PROBE_NAME [options]
--help This help message
--debug Increase verbosity of logs
EOF
unknown();
}
# CODE
if (-d "/home/allowkeeper") {
_dbg("/home/allowkeeper exists and is a directory");
success("bastion /home is unlocked");
}
_dbg("/home/allowkeeper doesn't exists or is not a directory");
failure("bastion /home is locked!");