Add UDB to list of editable fields.
[irspy-moved-to-github.git] / bin / irspy-nagios.pl
1 #!/usr/bin/perl
2 # Copyright (c) 2013 Index Data ApS, http://indexdata.com
3 #
4 # irspy-nagios.pl - check if IRSpy updates run
5
6 use strict;
7 use warnings;
8
9 use LWP::Simple;
10 use HTTP::Date;
11 use Getopt::Long;
12
13 my $help;
14 my $debug = 0;
15 my $update_cycle_days = 7;
16 my $url = 'http://irspy.indexdata.com/raw.html?id=Z39.50%3Aopencontent.indexdata.com%3A210%2Foaister';
17
18 sub usage () {
19     <<EOF;
20 usage: $0 [ options ]
21
22 --debug=0..2            debug option, default: $debug
23 --days=1..7             alert if older than days, default $update_cycle_days
24 --url=URL               url to check, default $url
25
26 EOF
27 }
28
29
30 ##################################################################
31 # main
32 #
33 GetOptions(
34     "debug=i"                  => \$debug,
35     "days=i"              => \$update_cycle_days,
36     "url=s"       => \$url,
37 ) or die usage;
38 die usage if $help;
39
40 my $data = get $url;
41
42 die "No data for $url\n" if !defined $data;
43 warn $data if $debug >= 2;
44
45 if ($data =~ m,<dateModified>(.*?)</dateModified>,) {
46   my $date = $1;
47   my $time = str2time($date);
48
49   my $last_update =  time() - $time;
50   warn "last update: $last_update seconds ago\n" if $debug;
51
52   if ($last_update > 24*3600* $update_cycle_days) {
53         die "Last update is older than $last_update seconds: $date\n";
54   }
55
56 } else {
57    die "cannot parse date field <dateModified> from $url\n";
58 }
59
60 exit 0;
61