36 sub get_stable_release($$); |
35 sub get_stable_release($$); |
37 sub report($$); |
36 sub report($$); |
38 sub version($$); |
37 sub version($$); |
39 |
38 |
40 my $ME = basename $0; |
39 my $ME = basename $0; |
41 my $VERSION = "2.0"; |
40 my $VERSION = "2.2"; |
42 |
41 |
43 my %opt = ( |
42 my %opt = ( |
44 url => "http://www.debian.org/releases/stable/index.html", |
43 url => "http://www.debian.org/releases/stable/index.html", |
45 search => "<p>Debian", |
44 search => "<p>Debian", |
46 file => "/etc/debian_version" |
45 file => "/etc/debian_version", |
|
46 ok => 0 |
47 ); |
47 ); |
48 |
48 |
49 MAIN: { |
49 MAIN: { |
50 Getopt::Long::Configure('bundling'); |
50 Getopt::Long::Configure('bundling'); |
51 GetOptions( |
51 GetOptions( |
52 "u|url=s" => \$opt{url}, |
52 "u|url=s" => \$opt{url}, |
53 "s|search=s" => \$opt{search}, |
53 "s|search=s" => \$opt{search}, |
54 "f|file=s" => \$opt{file}, |
54 "f|file=s" => \$opt{file}, |
|
55 "o|ok" => \$opt{ok}, |
55 "h|help" => sub { pod2usage(-verbose => 1, -exitval => $ERRORS{OK}) }, |
56 "h|help" => sub { pod2usage(-verbose => 1, -exitval => $ERRORS{OK}) }, |
56 "m|man" => sub { pod2usage(-verbose => 2, -exitval => $ERRORS{OK}) }, |
57 "m|man" => sub { pod2usage(-verbose => 2, -exitval => $ERRORS{OK}) }, |
57 "V|version" => sub { version($ME, $VERSION); exit $ERRORS{OK}; } |
58 "V|version" => sub { version($ME, $VERSION); exit $ERRORS{OK}; } |
58 ) or pod2usage(-verbose => 1, -exitval => $ERRORS{CRITICAL}); |
59 ) or pod2usage(-verbose => 1, -exitval => $ERRORS{CRITICAL}); |
59 |
60 |
60 ### %opt |
|
61 |
|
62 my $current_release = get_current_release($opt{file}); |
61 my $current_release = get_current_release($opt{file}); |
63 my $stable_release = get_stable_release($opt{url}, $opt{search}); |
62 my $stable_release = get_stable_release($opt{url}, $opt{search}); |
64 report($current_release, $stable_release); |
63 report($current_release, $stable_release); |
65 } |
64 } |
66 |
65 |
79 chomp; |
78 chomp; |
80 $current_release = $_; |
79 $current_release = $_; |
81 } |
80 } |
82 close(CR); |
81 close(CR); |
83 |
82 |
84 if ( (length $current_release == 3) && ($current_release =~ /0$/) ) { |
83 if ((length $current_release == 3) && ($current_release =~ /0$/)) { |
85 $current_release = "$current_release.0"; |
84 $current_release = "$current_release.0"; |
86 } |
85 } |
87 |
|
88 ### $current_release |
|
89 |
86 |
90 return $current_release; |
87 return $current_release; |
91 } |
88 } |
92 |
89 |
93 sub get_stable_release($$) { |
90 sub get_stable_release($$) { |
107 |
104 |
108 if ($found =~ /$opt{search}\s+([\d\.]+).*/) { |
105 if ($found =~ /$opt{search}\s+([\d\.]+).*/) { |
109 $stable_release = $1; |
106 $stable_release = $1; |
110 } |
107 } |
111 |
108 |
112 ### $stable_release |
|
113 |
|
114 return $stable_release; |
109 return $stable_release; |
115 } |
110 } |
116 |
111 |
117 sub report($$) { |
112 sub report($$) { |
118 my ($current_release, $stable_release) = @_; |
113 my ($current_release, $stable_release) = @_; |
119 |
114 |
120 if ($current_release eq $stable_release) { |
115 $stable_release =~ /^(\d+)/ and my $stable_major = int($1); |
121 print "RELEASE OK: current release number $current_release\n"; |
116 $current_release =~ /^(\d+)/ and my $current_major = int($1); |
122 exit $ERRORS{"OK"}; |
117 |
123 } |
118 if ($current_major < $stable_major) { |
124 else { |
119 if ($opt{ok}) { |
125 print |
120 print "RELEASE OK: $current_release/$stable_release\n"; |
126 "RELEASE WARNING: current release number $current_release / stable release number $stable_release\n"; |
121 exit $ERRORS{OK}; |
|
122 } |
|
123 print "RELEASE CRITICAL: $current_release / $stable_release\n"; |
|
124 exit $ERRORS{CRITICAL}; |
|
125 } |
|
126 |
|
127 if ($current_release ne $stable_release) { |
|
128 if ($opt{ok}) { |
|
129 print "RELEASE OK: $current_release/$stable_release\n"; |
|
130 exit $ERRORS{OK}; |
|
131 } |
|
132 print "RELEASE WARNING: $current_release / $stable_release\n"; |
127 exit $ERRORS{"WARNING"}; |
133 exit $ERRORS{"WARNING"}; |
128 } |
134 } |
|
135 |
|
136 print "RELEASE OK: $current_release/$stable_release\n"; |
|
137 exit $ERRORS{"OK"}; |
129 } |
138 } |
130 |
139 |
131 sub version($$) { |
140 sub version($$) { |
132 my ($progname, $version) = @_; |
141 my ($progname, $version) = @_; |
133 |
142 |