dsa-check-udldap-freshness: check new last_update.trace instead of /var/lib/misc...
[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 $SIG{__DIE__ } = sub() {
13         print shift;
14         exit $CODE{'UNKNOWN'};
15 };
16
17 sub check_age {
18         my ($f) = @_;
19         my @stat = stat($f) or die ("Cannot stat $f: $!\n");
20         my $age = time - $stat[10];
21         my $hage;
22         if ($age > 48 * 3600) {
23                 $hage = sprintf("%.1f days", $age / 24 / 3600);
24         } elsif ($age > 3600) {
25                 $hage = sprintf("%.1f hours", $age / 3600);
26         } else {
27                 $hage = sprintf("%d minutes", $age / 60);
28         };
29
30         if ($age > 60*60) {
31                 return [$CODE{'WARNING'}, "WARNING: ud-ldap info is $hage old"];
32         };
33         return [$CODE{'OK'}, "ud-ldap info is $hage old"];
34 };
35
36 my @msg;
37 my $f = "/var/lib/misc/thishost/last_update.trace";
38 unless (-e $f) {
39         print "WARNING: $f does not exist.\n";
40         exit $CODE{'WARNING'};
41 };
42
43 my $a = check_age($f);
44 if ($a->[0] != 0) {
45         print $a->[1], "\n";
46         exit $a->[0];
47 };
48 push @msg, $a->[1];
49
50 print "OK: ", join(', ', @msg), "\n";
51 exit 0;