Hello community,
here is the log from the commit of package nagios-plugins-zypper for openSUSE:Factory
checked in at Wed Oct 13 16:23:32 CEST 2010.
--------
--- nagios-plugins-zypper/nagios-plugins-zypper.changes 2010-10-10 13:47:08.000000000 +0200
+++ nagios-plugins-zypper/nagios-plugins-zypper.changes 2010-10-12 21:54:24.000000000 +0200
@@ -1,0 +2,11 @@
+Tue Oct 12 19:49:23 UTC 2010 - lars@linux-schulserver.de
+
+- update to 1.35:
+ + check for discontinued OS releases and report them as critical
+ as they would not receive any further updates
+ Supported: openSUSE 11.1, 11.2, 11.3 and 11.4
+ SLE 10.3, 11.0 11.1
+ + follow perl best practices
+- Req: gawk, grep and rpm as those commands are needed now
+
+-------------------------------------------------------------------
calling whatdependson for head-i586
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ nagios-plugins-zypper.spec ++++++
--- /var/tmp/diff_new_pack.mx2jr0/_old 2010-10-13 16:20:07.000000000 +0200
+++ /var/tmp/diff_new_pack.mx2jr0/_new 2010-10-13 16:20:07.000000000 +0200
@@ -1,5 +1,5 @@
#
-# spec file for package nagios-plugins-zypper (Version 1.30)
+# spec file for package nagios-plugins-zypper (Version 1.35)
#
# Copyright (c) 2010 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
@@ -20,12 +20,15 @@
Name: nagios-plugins-zypper
Summary: Nagios plugin for checking software updates
-Version: 1.30
+Version: 1.35
Release: 1
Url: http://en.opensuse.org/Nagios-plugins-zypper
License: BSD4c
Group: System/Monitoring
Source0: check_zypper.pl
+Requires: gawk
+Requires: grep
+Requires: rpm
%if 0%{?suse_version} > 1010
# nagios can execute the script with embedded perl
Recommends: perl
++++++ check_zypper.pl ++++++
--- /var/tmp/diff_new_pack.mx2jr0/_old 2010-10-13 16:20:07.000000000 +0200
+++ /var/tmp/diff_new_pack.mx2jr0/_new 2010-10-13 16:20:07.000000000 +0200
@@ -49,32 +49,48 @@
# constants
$PROGNAME = "check_zypper";
-$VERSION = "1.30";
+$VERSION = '1.35';
$DEBUG = 0;
# variables
-our $zypper = "/usr/bin/zypper";
-our $zypperopt = "--non-interactive --no-gpg-checks xml-updates";
-our $sudo = "/usr/bin/sudo";
-our $refresh_wrapper = "/usr/sbin/zypp-refresh-wrapper";
-our $use_sudo = "unset LANG; ";
-our $releasefile = "/etc/SuSE-release";
-our $release = "11.2";
-our $dist = "openSUSE";
-our $patchlevel = 0;
our ( $opt_V, $opt_h, $opt_i, $opt_w, $opt_c, $opt_f, $opt_o, $opt_p, $opt_r, $opt_s, $opt_t, $opt_u, $opt_v );
-our $exitcode = 0;
-our %ERRORS = ( 'OK' => 0, 'WARNING' => 1, 'CRITICAL' => 2, 'UNKNOWN' => 3, 'DEPENDENT' => 4 );
-our %REVERSE = ( 4 => 'DEPENDENT', 3 => 'UNKNOWN', 2 => 'CRITICAL', 1 => 'WARNING', 0 => 'OK' );
-our $TIMEOUT = 120;
-our @patchignore = ();
-our @packageignore = ();
-our @packagewhitelist = ();
-
-$opt_w = "recommended,optional,unsupported";
-$opt_c = "security";
+our $zypper = '/usr/bin/zypper';
+our $zypperopt = '--non-interactive --no-gpg-checks xml-updates';
+our $sudo = '/usr/bin/sudo';
+our $refresh_wrapper = '/usr/sbin/zypp-refresh-wrapper';
+our $use_sudo = 'unset LANG; ';
+our $releasefile = '/etc/SuSE-release';
+our $rpm = '/bin/rpm';
+our $awk = '/bin/awk';
+our $grep = '/bin/grep';
+our $TIMEOUT = 120;
+our @patchignore = ();
+our @packageignore = ();
+our @packagewhitelist= ();
+our $patchlevel = 0;
+our $exitcode = 0;
+our %ERRORS = (
+ 'OK' => 0,
+ 'WARNING' => 1,
+ 'CRITICAL' => 2,
+ 'UNKNOWN' => 3,
+ 'DEPENDENT' => 4,
+);
+our %REVERSE = (
+ 4 => 'DEPENDENT',
+ 3 => 'UNKNOWN',
+ 2 => 'CRITICAL',
+ 1 => 'WARNING',
+ 0 => 'OK',
+);
+our %supported_release = (
+ 'openSUSE' => [ 11.1, 11.2, 11.3, 11.4 ],
+ 'SLE' => [ 10.3, 11.0, 11.1 ],
+);
+$opt_w = 'recommended,optional,unsupported';
+$opt_c = 'security';
$opt_f = "$releasefile";
-$opt_t = "120";
+$opt_t = '120';
$opt_v = 0;
$opt_o = 0;
$opt_p = 1;
@@ -103,21 +119,31 @@
}
sub get_distribution($) {
- my $file = shift || "$releasefile";
+ my ($file) = @_;
+ my %dist = (
+ 'name' => '',
+ 'version' => '',
+ 'release' => '0',
+ );
open( RELEASE, "<$file" ) || warn("Could not open $file\n");
while (<RELEASE>) {
if (/^SUSE Linux Enterprise/) {
- $dist = "SLE";
+ $dist{'name'} = 'SLE';
}
+ elsif (/^openSUSE/){
+ $dist{'name'} = 'openSUSE';
+ }
if (/^VERSION/) {
- ($release) = $_ =~ m/VERSION = (.*)/;
+ my ($version) = $_ =~ m/VERSION = (.*)/;
+ $dist{'version'}=trim($version);
}
if (/^PATCHLEVEL/) {
- ($patchlevel) = $_ =~ m/PATCHLEVEL = (.*)/;
+ my ($release) = $_ =~ m/PATCHLEVEL = (.*)/;
+ $dist{'release'}=trim($release);
}
}
close(RELEASE);
- return ( $dist, $release, $patchlevel );
+ return ( \%dist );
}
sub print_usage () {
@@ -203,7 +229,10 @@
}
}
-sub refresh_zypper() {
+sub refresh_zypper($) {
+ my ($distref) = @_;
+ my $dist=%$distref;
+print STDERR Data::Dumper->Dump([$dist]);
if ( -x "$refresh_wrapper" ) {
print STDERR "Trying: $refresh_wrapper 2>/dev/null 1>&2\n" if ($DEBUG);
if ( open( WRAPPER, "$refresh_wrapper 2>&1 |" ) ) {
@@ -212,7 +241,6 @@
foreach my $line (@wrapper_out) {
chomp $line;
print STDERR "LINE: $line\n" if ($DEBUG);
-
# error handling
return ( "ERROR: " . xml_re_escape($line), $ERRORS{'ERROR'} ) if ( $line =~ /Could not refresh repository.*/ );
return ( "ERROR: " . xml_re_escape($line), $ERRORS{'ERROR'} ) if ( $line =~ /Digest verification failed.*/ );
@@ -223,7 +251,7 @@
}
elsif ( -x "$zypper" ) {
print STDERR "Trying: $sudo $zypper ref 2>/dev/null 1>&2\n" if ($DEBUG);
- if ( ( "$release" eq "10.2" ) || ( ( "$dist" eq "SLE" ) && ( "$release" eq "10" ) ) ) {
+ if ( ( "$dist->{'version'}" eq "10.2" ) || ( ( "$dist->{'name'}" eq "SLE" ) && ( "$dist->{'version'}" eq "10" ) ) ) {
my $res = system("$sudo $zypper ref 2>/dev/null 1>&2");
return ( "ERROR: Unable to refresh the repositories", $ERRORS{'ERROR'} ) if !($res);
}
@@ -246,9 +274,9 @@
sub check_errorcode($) {
my $status = shift;
my $level = 0;
- my $returnvalue = "OK";
- $returnvalue = "WARNING" if ( "$opt_w" =~ /$status/ );
- $returnvalue = "CRITICAL" if ( "$opt_c" =~ /$status/ );
+ my $returnvalue = 'OK';
+ $returnvalue = 'WARNING' if ( "$opt_w" =~ /$status/ );
+ $returnvalue = 'CRITICAL' if ( "$opt_c" =~ /$status/ );
$level = $ERRORS{"$returnvalue"};
$exitcode = $level if ( $level gt $exitcode );
$returnvalue = $REVERSE{"$exitcode"};
@@ -272,27 +300,29 @@
return $text;
}
-sub check() {
+sub check($) {
+ my ($dist) = @_;
my ( $status, $ret_str, $error );
- my $secstr = "";
- my $recstr = "";
- my $optstr = "";
- my $pacstr = "";
- my $warnstr = "";
- my $unsupstr = "";
+ my $secstr = '';
+ my $recstr = '';
+ my $optstr = '';
+ my $pacstr = '';
+ my $warnstr = '';
+ my $unsupstr = '';
my $update_avail = 0;
my %packagelist;
- my @unsup_packagelist=();
- if ($opt_u){
- @unsup_packagelist=`rpm -qa --qf "%{NAME} %{VENDOR}\n" | grep -v 'SUSE LINUX Products GmbH, Nuernberg, Germany' | grep -v gpg-pubkey | awk '" " { print \$1 }'`;
+ my @unsup_packagelist = ();
+
+ if ($opt_u) {
+ @unsup_packagelist = `$rpm -qa --qf "%{NAME} %{VENDOR}\n" | $grep -v 'SUSE LINUX Products GmbH, Nuernberg, Germany' | $grep -v gpg-pubkey | $awk '" " { print \$1 }'`;
my $category = 'unsupported';
- my $status = "new";
- foreach my $name (sort(@unsup_packagelist)){
+ my $status = 'new';
+ foreach my $name ( sort(@unsup_packagelist) ) {
chomp($name);
- if ( grep {/\Q$name\E/} @packagewhitelist ){
- print STDERR "WARINING: ignoring $name as it is in \@packagewhitelist\n" if ($DEBUG);
- next;
- }
+ if ( grep {/\Q$name\E/} @packagewhitelist ) {
+ print STDERR "WARINING: ignoring $name as it is in \@packagewhitelist\n" if ($DEBUG);
+ next;
+ }
$packagelist{"$category"}{"$name"}{'category'} = "$category";
$packagelist{"$category"}{"$name"}{'name'} = "$name";
$packagelist{"$category"}{"$name"}{'status'} = "$status";
@@ -303,30 +333,30 @@
if ( open( FH, "$use_sudo $zypper $zypperopt 2>&1 |" ) ) {
while (<FH>) {
chomp;
- my $category = "unknown";
+ my $category = 'unknown';
print STDERR "LINE: $_\n" if ($DEBUG);
# error handling
- return ( "UNKNOWN: " . xml_re_escape($_), "UNKNOWN" ) if (/not found on medium/);
- return ( "UNKNOWN: " . xml_re_escape($_), "UNKNOWN" ) if (/I\/O error: Can't provide/);
- return ( "UNKNOWN: " . xml_re_escape($_), "UNKNOWN" ) if (/Error message:/);
- return ( "UNKNOWN: " . xml_re_escape($_), "UNKNOWN" ) if (/A ZYpp transaction is already in progress./);
- return ( "UNKNOWN: " . xml_re_escape($_), "UNKNOWN" ) if (/System management is locked/);
+ return ( 'UNKNOWN: ' . xml_re_escape($_), 'UNKNOWN' ) if (/not found on medium/);
+ return ( 'UNKNOWN: ' . xml_re_escape($_), 'UNKNOWN' ) if (/I\/O error: Can't provide/);
+ return ( 'UNKNOWN: ' . xml_re_escape($_), 'UNKNOWN' ) if (/Error message:/);
+ return ( 'UNKNOWN: ' . xml_re_escape($_), 'UNKNOWN' ) if (/A ZYpp transaction is already in progress./);
+ return ( 'UNKNOWN: ' . xml_re_escape($_), 'UNKNOWN' ) if (/System management is locked/);
if (/out-of-date/) {
print STDERR "WARNING: outdated repository found\n" if ($DEBUG);
if ( !$opt_o ) {
- $error = check_errorcode("security");
+ $error = check_errorcode('security');
$warnstr = "At least one of your Repositories is out of date. Please run \"zypper refresh\" as root to update it. ";
$warnstr .= "\n" if ($opt_v);
}
}
if (/