my %normpkgs;
my %okhosts;
my %skiphosts;
+my %allhosts;
my $sectot = 0;
my $owntot = 0;
my $normtot = 0;
next if ($H =~ /^commands/ );
next if ($H =~ /^servicegroups/ );
print "Checking $H\n" if $debug;
+ $allhosts{$H}=1;
my $apt = `ssh $H apt-get upgrade -s -o 'Debug::NoLocking=true' `;
# Note, do not append -qq, we want some output even when nothing to do
if ( !$apt ) {
$table .= " $own from indexdata " if $own;
} else {
$table .= "ok";
+ $okhosts{$H} = 1;
}
my $updlink = $wikilink . ucfirst($H) . "Updates" . $year;
$table .= " <a href='$updlink' >Upd</a>";
}
$table .= "</table>\n";
-# Produce page
+# Page header
my $outfile = "/tmp/aptcheck.html";
open F, ">$outfile"
or die "Could not open $outfile for writing: $!";
print F "<H1>Apt package status</H1>\n";
-# Summary table
+# Summary table - NEW: one row for per host group
+print F "<p/>\n";
print F "<table border='1' >\n";
print F "<tr><td> </td>" ;
-print F "<td><b>Security</b><br/>" . scalar(keys(%sechosts)) .
+print F "<td><b>Hosts</b></td>\n";
+print F "<td><b>Packages</b></td></tr>\n";
+
+if ( $sectot ) {
+ print F "<tr><td><b>Security</b><br/>" . scalar(keys(%sechosts)) .
" / " . scalar(keys(%secpkgs)) . " / $sectot </td>\n" ;
-print F "<td>Indexdata<br/>" . scalar(keys(%ownhosts)) .
+ print F "<td>";
+ for $HH ( sort(keys(%sechosts)) ) {
+ print F "<a href='#$HH'><b>$HH</b></a> ";
+ }
+ print F "<td>" . join(" ",sort(keys(%secpkgs))) . " </td>";
+ print F "</tr>\n";
+}
+if ( $owntot ) {
+ print F "<tr><td><b>Indexdata</b><br/>" . scalar(keys(%ownhosts)) .
" / " . scalar(keys(%ownpkgs)) . " / $owntot </td>\n" ;
-print F "<td>Normal<br/>" . scalar(keys(%normhosts)) .
- " / " . scalar(keys(%normpkgs)) . " / $normtot </td>" . "</tr>\n";
-print F "<tr><td>Hosts</td>\n";
-
-
-print F "<td>";
-for $HH ( sort(keys(%sechosts)) ) {
- print F "<a href='#$HH'><b>$HH</b></a> ";
+ print F "<td>";
+ for $HH ( sort(keys(%ownhosts)) ) {
+ print F "<a href='#$HH'><b>$HH</b></a> ";
+ }
+ print F "<td>" . join(" ",sort(keys(%ownpkgs))) . " </td>";
+ print F "</tr>\n";
}
-print F " </td>\n";
-#print F "<td><b>" . join(" ",sort(keys(%sechosts))) . "</b> </td>";
-#print F "<td><b>" . join(" ",sort(keys(%ownhosts))) . "</b> </td>";
-print F "<td>";
-for $HH ( sort(keys(%ownhosts)) ) {
- print F "<a href='#$HH'><b>$HH</b></a> ";
+if ( $normtot ) {
+ print F "<tr><td>Indexdata<br/>" . scalar(keys(%normhosts)) .
+ " / " . scalar(keys(%normpkgs)) . " / $normtot </td>\n" ;
+ print F "<td>";
+ for $HH ( sort(keys(%normhosts)) ) {
+ print F "<a href='#$HH'><b>$HH</b></a> ";
+ }
+ print F "<td>" . join(" ",sort(keys(%normpkgs))) . " </td>";
+ print F "</tr>\n";
}
-print F " </td>\n";
-#print F "<td><b>" . join(" ",sort(keys(%normhosts))) . "</b> </td></tr>\n";
-print F "<td>";
-for $HH ( sort(keys(%normhosts)) ) {
- print F "<a href='#$HH'><b>$HH</b></a> ";
+if ( %skiphosts ) {
+ print F "<tr><td>Skipped: " . scalar(keys(%skiphosts)) . "</td>\n";
+ print F "<td colspan='2'>";
+ for $HH ( sort(keys(%skiphosts)) ) {
+ print F "<a href='#$HH'><b>$HH</b></a> ";
+ }
+ print F "</td></tr>\n";
+}
+if ( %okhosts ) {
+ print F "<tr><td>Ok: " . scalar(keys(%okhosts)) . "</td>\n";
+ print F "<td colspan='2'>";
+ for $HH ( sort(keys(%okhosts)) ) {
+ print F "<a href='#$HH'><b>$HH</b></a> ";
+ }
+ print F "</td></tr>\n";
}
-print F " </td>\n";
-
-print F "<tr><td>Packages</td>\n";
-print F "<td>" . join(" ",sort(keys(%secpkgs))) . " </td>";
-print F "<td>" . join(" ",sort(keys(%ownpkgs))) . " </td>";
-print F "<td>" . join(" ",sort(keys(%normpkgs))) . " </td></tr>\n";
print F "</table>\n";
+
+# The host table
print F $table;
print F "<p/>Produced " . `date`.
system "scp -q $outfile nagios:/var/www/heikki/index.html";
+exit(0);
+
# Helper to take two strings and highligt that part of the second
# that is different from the first.
sub strdiff {