Merge branch 'master' of git+ssh://db.debian.org/git/dsa-nagios
[mirror/dsa-nagios.git] / dsa-nagios-checks / checks / dsa-check-udldap-freshness
1 #!/usr/bin/perl -w
2
3 use strict;
4 my %CODE = (
5         'UNDEF'         => -1,
6         'OK'            => 0,
7         'WARNING'       => 1,
8         'CRITICAL'      => 2,
9         'UNKNOWN'       => 3
10 );
11
12 my $f;
13
14 $SIG{__DIE__ } = sub() {
15         print shift;
16         exit $CODE{'UNKNOWN'};
17 };
18
19 sub check_age {
20         my ($f) = @_;
21         my @stat = stat($f) or die ("Cannot stat $f: $!\n");
22         my $age = time - $stat[10];
23         my $hage;
24         if ($age > 48 * 3600) {
25                 $hage = sprintf("%.1f days", $age / 24 / 3600);
26         } elsif ($age > 3600) {
27                 $hage = sprintf("%.1f hours", $age / 3600);
28         } else {
29                 $hage = sprintf("%d minutes", $age / 60);
30         };
31
32         if ($age > 60*60) {
33                 return [$CODE{'WARNING'}, "WARNING: ud-ldap info is $hage old"];
34         };
35         return [$CODE{'OK'}, "ud-ldap info is $hage old"];
36 };
37
38 my @msg;
39 for $f (qw{/var/lib/misc/thishost/passwd.tdb /var/lib/misc/passwd.db}) {
40         unless (-e $f) {
41                 print "WARNING: $f does not exist.\n";
42                 exit $CODE{'WARNING'};
43         };
44
45         my $a = check_age($f);
46         if ($a->[0] != 0) {
47                 print $a->[1], "\n";
48                 exit $a->[0];
49         };
50         push @msg, $a->[1];
51 };
52
53 print "OK: ", join(', ', @msg), "\n";
54 exit 0;