--- a/check_release.pl Tue Mar 31 09:07:18 2015 +0200
+++ b/check_release.pl Tue Mar 31 09:11:19 2015 +0200
@@ -32,7 +32,7 @@
DEPENDENT => 4
);
-sub get_local_release;
+sub get_current_release($);
sub get_stable_release($$);
sub report($$);
sub version($$);
@@ -42,7 +42,7 @@
my %opt = (
url => "http://www.debian.org/releases/stable/index.html",
- search => qr/<p>Debian\b.*?([\d.]+)/,
+ search => "<p>Debian",
file => "/etc/debian_version",
ok => 0
);
@@ -59,66 +59,80 @@
"V|version" => sub { version($ME, $VERSION); exit $ERRORS{OK}; }
) or pod2usage(-verbose => 1, -exitval => $ERRORS{CRITICAL});
- my ($local_release, $stable_release) = eval {
- get_local_release($opt{file}),
- get_stable_release($opt{url}, $opt{search});
- };
- if ($@) {
- print "RELEASE CRITICAL: $@\n";
- exit $ERRORS{CRITICAL};
- }
- report($local_release, $stable_release);
+ my $current_release = get_current_release($opt{file});
+ my $stable_release = get_stable_release($opt{url}, $opt{search});
+ report($current_release, $stable_release);
}
-sub get_local_release {
+sub get_current_release($) {
+ my $file = shift;
+ my $current_release = undef;
- my $local_release = do {
- local @ARGV = grep { -r } @_
- or die "@_: $!\n";
- <>;
- };
+ unless (-r $file) {
+ print
+"RELEASE CRITICAL: $file not exists or not read permission is granted\n";
+ exit $ERRORS{CRITICAL};
+ }
- chomp $local_release;
- return $local_release;
+ open(CR, "<$file");
+ while (<CR>) {
+ chomp;
+ $current_release = $_;
+ }
+ close(CR);
+
+ return $current_release;
}
sub get_stable_release($$) {
my ($url, $search) = @_;
+ my ($found, $stable_release) = undef;
my $website;
+ my @website = ();
- $website = get($url)
- or die "Failed to get $url\n";
+ $website = get($url);
+ unless (defined $website) {
+ print
+"RELEASE CRITICAL: failed to get $url\n";
+ exit $ERRORS{CRITICAL};
+ }
- $website =~ /$opt{search}/s
- or die "an't parse $url\n";
+ push @website, split("\n", $website);
- return $1;
-}
+ foreach (@website) {
+ unless ($found) {
+ /$search/ or next;
+ $found = $_;
+ next;
+ }
+ }
-sub compare_versions {
- my ($left, $right) = @_;
- my @left = split '.', $left;
- my @right = split '.', $right;
+ if ($found =~ /$opt{search}\s+([\d\.]+).*/) {
+ $stable_release = $1;
+ }
+ return $stable_release;
}
sub report($$) {
- my ($local_release, $stable_release) = @_;
- my ($local_major, $stable_major) = map { int } $local_release, $stable_release;
+ my ($current_release, $stable_release) = @_;
+
- die "<$local_major | $stable_major>";
-
- if ($opt{ok} or $local_release eq $stable_release) {
- print "RELEASE OK: $local_release/$stable_release\n";
+ if ($opt{ok} or $current_release eq $stable_release) {
+ print "RELEASE OK: $current_release/$stable_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 < -1) {
- print "RELEASE CRITICAL: $local_release / $stable_release\n";
+ print "RELEASE CRITICAL: $current_release / $stable_release\n";
exit $ERRORS{CRITICAL};
}
- print "RELEASE WARNING: $local_release / $stable_release\n";
+ print "RELEASE WARNING: $current_release / $stable_release\n";
exit $ERRORS{"WARNING"};
}
--- a/debian/changelog Tue Mar 31 09:07:18 2015 +0200
+++ b/debian/changelog Tue Mar 31 09:11:19 2015 +0200
@@ -1,10 +1,3 @@
-nagios-plugin-release (2.8) oldstable stable; urgency=medium
-
- * removed dependency on perl-doc
- * changed maintainer
-
- -- Heiko Schlittermann (HS12-RIPE) <hs@schlittermann.de> Tue, 31 Mar 2015 09:07:10 +0200
-
nagios-plugin-release (2.7) oldstable stable; urgency=medium
* fixed compression type:
--- a/debian/control Tue Mar 31 09:07:18 2015 +0200
+++ b/debian/control Tue Mar 31 09:11:19 2015 +0200
@@ -1,12 +1,12 @@
Source: nagios-plugin-release
Section: net
Priority: extra
-Maintainer: Heiko Schlittermann (HS12-RIPE) <hs@schlittermann.de>
+Maintainer: Christian Arnold <arnold@schlittermann.de>
Build-Depends: debhelper (>= 7), libwww-perl
Standards-Version: 3.9.1
Package: nagios-plugin-release
Architecture: all
-Depends: ${misc:Depends}, ${perl:Depends}, libwww-perl
+Depends: ${misc:Depends}, ${perl:Depends}, perl-doc, libwww-perl
Description: nagios plugin to check current debian release number
This plugin checks the current debian release number.