check_release.pl
changeset 1 ccfe1fda4a0b
parent 0 3387351ebb0e
child 2 1be9848b69b6
equal deleted inserted replaced
0:3387351ebb0e 1:ccfe1fda4a0b
    19 EOF
    19 EOF
    20 
    20 
    21 my $opt_url    = "http://www.debian.org/releases/stable/index.html";
    21 my $opt_url    = "http://www.debian.org/releases/stable/index.html";
    22 my $opt_search = "<p>Debian GNU/Linux";
    22 my $opt_search = "<p>Debian GNU/Linux";
    23 my $opt_file   = "/etc/debian_version";
    23 my $opt_file   = "/etc/debian_version";
    24 my ($found, $current_release, $current_majornr,  $stable_release, $stable_majornr, @website);
    24 my ($found, $current_release, $current_majornr, $current_minornr,  $stable_release, $stable_majornr, $stable_minornr, @website);
    25 
    25 
    26 sub check_status();
    26 sub check_status();
    27 sub print_help();
    27 sub print_help();
    28 sub print_usage();
    28 sub print_usage();
    29 
    29 
    46 
    46 
    47 	open(CR, "<$opt_file");
    47 	open(CR, "<$opt_file");
    48 	while(<CR>) {
    48 	while(<CR>) {
    49 		chomp;
    49 		chomp;
    50 		$current_release = $_;
    50 		$current_release = $_;
    51 		$current_release =~ /^(\d)+.*/;
    51 		$current_release =~ /^(\d)+.*(\d)+$/;
    52 		$current_majornr = $1;
    52 		$current_majornr = $1;
       
    53 		$current_minornr = $2;
    53 	}
    54 	}
    54 	close(CR);
    55 	close(CR);
    55 
    56 
    56 	# download the website
    57 	# download the website
    57 	push @website, split("\n", get($opt_url));
    58 	push @website, split("\n", get($opt_url));
    65 	}
    66 	}
    66 
    67 
    67 	# get stable release number
    68 	# get stable release number
    68 	if ($found =~ /$opt_search\s+([\d\.]+).*/) {
    69 	if ($found =~ /$opt_search\s+([\d\.]+).*/) {
    69 		$stable_release = $1;
    70 		$stable_release = $1;
    70 		$stable_release =~ /^(\d)+.*/;
    71 		$stable_release =~ /^(\d)+.*(\d)+$/;
    71 		$stable_majornr = $1;
    72 		$stable_majornr = $1;
       
    73 		$stable_minornr = $2;
    72 	}
    74 	}
    73 
    75 
    74 	check_status();
    76 	check_status();
    75 
    77 
    76 }
    78 }
    77 
    79 
    78 sub check_status() {
    80 sub check_status() {
    79 	if ($stable_release eq $current_release) {
    81 	if ($stable_release eq $current_release) {
    80 		print "RELEASE OK: current release number $current_release\n";
    82 		print "RELEASE OK: current release number $current_release\n";
    81 		exit $ERRORS{"OK"};
    83 		exit $ERRORS{"OK"};
       
    84 	# Debian-Project is a little bit slowly to update his websites
       
    85      } elsif (++$stable_minornr eq $current_minornr) {
       
    86         print "RELEASE OK: current release number $current_release\n";
       
    87         exit $ERRORS{"OK"};
    82 	} elsif ($current_majornr < $stable_majornr) {
    88 	} elsif ($current_majornr < $stable_majornr) {
    83 		print "RELEASE CRITICAL: current release number $current_release / stable release number $stable_release\n";
    89 		print "RELEASE CRITICAL: current release number $current_release / stable release number $stable_release\n";
    84 		exit $ERRORS{"CRITICAL"};
    90 		exit $ERRORS{"CRITICAL"};
    85 	} else {
    91 	} else {
    86 		print "RELEASE WARNING: current release number $current_release / stable release number $stable_release\n";
    92 		print "RELEASE WARNING: current release number $current_release / stable release number $stable_release\n";