diff -r 000000000000 -r 57a003cf847f check_aptkeys.pl
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/check_aptkeys.pl Fri Mar 04 16:43:47 2011 +0100
@@ -0,0 +1,204 @@
+#!/usr/bin/perl -w
+
+# Copyright (C) 2011 Christian Arnold
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+#
+# Christian Arnold
+
+use strict;
+use warnings;
+use File::Basename;
+use Getopt::Long;
+use Date::Manip;
+use Pod::Usage;
+use if $ENV{DEBUG} => "Smart::Comments";
+
+my %ERRORS = (
+ OK => 0,
+ WARNING => 1,
+ CRITICAL => 2,
+ UNKNOWN => 3,
+ DEPENDENT => 4
+);
+
+sub get_status();
+sub report($$);
+sub version($$);
+
+my $ME = basename $0;
+my $VERSION = "2.0";
+
+my %opt = (
+ binary => "/usr/bin/apt-key",
+ warning => "1month",
+ critical => "1week",
+);
+
+MAIN: {
+ Getopt::Long::Configure('bundling');
+ GetOptions(
+ "b|binary=s" => \$opt{binary},
+ "w|warning=s" => \$opt{warning},
+ "c|critical=s" => \$opt{critical},
+ "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} );
+
+ unless ( -x $opt{binary} ) {
+ print "APTKEYS CRITICAL: $opt{binary} - not found or not executable\n";
+ exit $ERRORS{CRITICAL};
+ }
+
+ my ( $warning, $critical ) = get_status();
+ report( $warning, $critical );
+}
+
+sub get_status() {
+ my $w_time = DateCalc( "today", "+ $opt{warning}" );
+ my $c_time = DateCalc( "today", "+ $opt{critical}" );
+
+ my @command = ( "$opt{binary}", "list" );
+ open( OUTPUT, "-|" ) or do {
+ open( STDERR, ">&STDOUT" );
+ exec(@command);
+ };
+
+ my %keys = ();
+ while (