diff -r c442ffe27e48 -r d1541211673e check_release.pl --- a/check_release.pl Sun Feb 06 15:38:11 2011 +0100 +++ b/check_release.pl Tue Jul 05 15:19:05 2011 +0200 @@ -22,7 +22,6 @@ use Getopt::Long; use LWP::Simple; use Pod::Usage; -use if $ENV{DEBUG} => "Smart::Comments"; my %ERRORS = ( OK => 0, @@ -38,12 +37,13 @@ sub version($$); my $ME = basename $0; -my $VERSION = "2.0"; +my $VERSION = "2.2"; my %opt = ( url => "http://www.debian.org/releases/stable/index.html", search => "

Debian", - file => "/etc/debian_version" + file => "/etc/debian_version", + ok => 0 ); MAIN: { @@ -52,13 +52,12 @@ "u|url=s" => \$opt{url}, "s|search=s" => \$opt{search}, "f|file=s" => \$opt{file}, + "o|ok" => \$opt{ok}, "h|help" => sub { pod2usage(-verbose => 1, -exitval => $ERRORS{OK}) }, "m|man" => sub { pod2usage(-verbose => 2, -exitval => $ERRORS{OK}) }, "V|version" => sub { version($ME, $VERSION); exit $ERRORS{OK}; } ) or pod2usage(-verbose => 1, -exitval => $ERRORS{CRITICAL}); - ### %opt - my $current_release = get_current_release($opt{file}); my $stable_release = get_stable_release($opt{url}, $opt{search}); report($current_release, $stable_release); @@ -81,11 +80,9 @@ } close(CR); - if ( (length $current_release == 3) && ($current_release =~ /0$/) ) { - $current_release = "$current_release.0"; - } - - ### $current_release + if ((length $current_release == 3) && ($current_release =~ /0$/)) { + $current_release = "$current_release.0"; + } return $current_release; } @@ -109,23 +106,35 @@ $stable_release = $1; } - ### $stable_release - return $stable_release; } sub report($$) { my ($current_release, $stable_release) = @_; - if ($current_release eq $stable_release) { - print "RELEASE OK: current release number $current_release\n"; - exit $ERRORS{"OK"}; + $stable_release =~ /^(\d+)/ and my $stable_major = int($1); + $current_release =~ /^(\d+)/ and my $current_major = int($1); + + if ($current_major < $stable_major) { + if ($opt{ok}) { + print "RELEASE OK: $current_release/$stable_release\n"; + exit $ERRORS{OK}; + } + print "RELEASE CRITICAL: $current_release / $stable_release\n"; + exit $ERRORS{CRITICAL}; } - else { - print -"RELEASE WARNING: current release number $current_release / stable release number $stable_release\n"; + + if ($current_release ne $stable_release) { + if ($opt{ok}) { + print "RELEASE OK: $current_release/$stable_release\n"; + exit $ERRORS{OK}; + } + print "RELEASE WARNING: $current_release / $stable_release\n"; exit $ERRORS{"WARNING"}; } + + print "RELEASE OK: $current_release/$stable_release\n"; + exit $ERRORS{"OK"}; } sub version($$) { @@ -152,6 +161,7 @@ check_release [-u|--url url] [-s|--search string] [-f|--file path] + [-o|--ok] [-h|--help] [-m|--man] [-V|--version] @@ -172,6 +182,10 @@ file with current release informations (default: /etc/debian_version) +=item B<-o>|B<--ok> + +Exit status always ok. + =item B<-h>|B<--help> Print detailed help screen. @@ -192,7 +206,7 @@ =head1 VERSION -This man page is current for version 2.0 of check_release. +This man page is current for version 2.2 of check_release. =head1 AUTHOR