Turned the table around, added lines
authorHeikki Levanto <heikki@indexdata.dk>
Fri, 18 Mar 2011 12:50:39 +0000 (13:50 +0100)
committerHeikki Levanto <heikki@indexdata.dk>
Fri, 18 Mar 2011 12:50:39 +0000 (13:50 +0100)
aptcheck/aptcheck.pl

index c5d17be..22ad13f 100755 (executable)
@@ -31,6 +31,7 @@ my %normhosts;
 my %normpkgs;
 my %okhosts;
 my %skiphosts;
+my %allhosts;
 my $sectot = 0;
 my $owntot = 0;
 my $normtot = 0;
@@ -43,6 +44,7 @@ for $hline ( split("\n",$hostlist) ) {
     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 ) {
@@ -103,6 +105,7 @@ for $hline ( split("\n",$hostlist) ) {
         $table .= " $own from indexdata " if $own;
     } else {
         $table .= "ok";
+        $okhosts{$H} = 1;
     }
     my $updlink = $wikilink . ucfirst($H) . "Updates" . $year;
     $table .= "&nbsp;<a href='$updlink' >Upd</a>";
@@ -113,7 +116,7 @@ for $hline ( split("\n",$hostlist) ) {
 }
 $table .= "</table>\n";
 
-# Produce page
+# Page header
 my $outfile = "/tmp/aptcheck.html";
 open F, ">$outfile"
     or die "Could not open $outfile for writing: $!";
@@ -123,43 +126,63 @@ print F "<body>\n";
 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>&nbsp;</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))) . "&nbsp;</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))) . "&nbsp;</td>";
+    print F "</tr>\n";
 }
-print F "&nbsp;</td>\n";
-#print F "<td><b>" . join(" ",sort(keys(%sechosts))) . "</b>&nbsp;</td>";
-#print F "<td><b>" . join(" ",sort(keys(%ownhosts))) . "</b>&nbsp;</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))) . "&nbsp;</td>";
+    print F "</tr>\n";
 }
-print F "&nbsp;</td>\n";
-#print F "<td><b>" . join(" ",sort(keys(%normhosts))) . "</b>&nbsp;</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 "&nbsp;</td>\n";
-
-print F "<tr><td>Packages</td>\n";
-print F "<td>" . join(" ",sort(keys(%secpkgs))) . "&nbsp;</td>";
-print F "<td>" . join(" ",sort(keys(%ownpkgs))) . "&nbsp;</td>";
-print F "<td>" . join(" ",sort(keys(%normpkgs))) . "&nbsp;</td></tr>\n";
 print F "</table>\n";
 
+
+# The host table
 print F $table;
 
 print F "<p/>Produced " . `date`.
@@ -172,6 +195,8 @@ close(F)
 
 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 {