]> git.immae.eu Git - perso/Immae/Config/Nix.git/blob - modules/private/monitoring/plugins/check_imap_connection
Add status engine website
[perso/Immae/Config/Nix.git] / modules / private / monitoring / plugins / check_imap_connection
1 #!/usr/bin/env perl
2
3 use strict;
4 use Getopt::Std;
5 $| = 1;
6
7 my %opts;
8 getopts('h:u:p:H:', \%opts);
9
10 my $STATE_OK = 0;
11 my $STATE_WARNING = 1;
12 my $STATE_CRITICAL = 2;
13 my $STATE_UNKNOWN = 3;
14
15 if ($opts{'h'} || !$opts{'u'} || !$opts{'p'} || !$opts{'H'}) {
16 &print_help();
17 exit($STATE_UNKNOWN);
18 }
19
20 my $user = $opts{'u'};
21 my $password = $opts{'p'};
22 my $host = $opts{'H'};
23
24 my $cmd_result = `(echo "a login $user $password"; echo "b logout") | openssl s_client -quiet -ign_eof -connect $host -starttls imap 2>&1`;
25 my $expected_result = "a OK Logged in";
26
27 chomp($cmd_result);
28 if ($cmd_result !~ /$expected_result/) {
29 print "IMAP CRITICAL - Unable to connect via imaps | imap=0;;;;\n";
30 exit($STATE_CRITICAL);
31 } else {
32 print "IMAP OK - imaps connected successfully | imap=1;;;;\n";
33 exit($STATE_OK);
34 }
35
36 sub print_help() {
37 print << "EOF";
38 Check whether imap works via ssl and is able to connect its database.
39
40 Options:
41 -h
42 Print detailed help screen
43 -u
44 User to log in as
45 -p
46 Password to log in
47 -H
48 Host to log in to
49
50 EOF
51 }
52