--- 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 => "<p>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