Errata-Reports mit Spacwalk, Red Hat Satellite oder SUSE Manager erstellen

Errata-Report

Manchmal ist es notwendig, den Patch-Status der Linux-Systemlandschaft detailliert aufzuschlüsseln.

Insbesondere wenn die Arbeit des Administrators einigen Sicherheitsnormen unterliegt, ist eine ständige Dokumentation der Wartungsschritte oft unumgänglich.

Bei der Verwendung von Spacewalk, Red Hat Satellite oder SUSE Manager werden verfügbare Patches als Errata bezeichnet und je nach Art (Sicherheitsupdate, Bugfix, Funktionserweiterung,...) weiter klassifiziert.

Anstatt für jedes System diese verfügbare Errata manuell aufzulisten, kann man hier auf ein Spacewalk-Kommando spacewalk-report zurückgreifen und diesen Vorgang automatisieren. Falls dieses Tool auf dem System nicht zur Verfügung steht, fehlt vermutlich das Software-Paket spacewalk-reports - eine Nachinstallation über die Paket-Verwaltung schafft hier Abhilfe.

Das Tool spacewalk-report bietet verschiedene Reports an - wird das Programm ohne Parameter aufgerufen, listet es alle Reports auf. Durch die Angabe des Schalter --list-fields-info werden die entsprechenden Spalten des jeweiligen Reports erläutert:

1# spacewalk-report
2# spacewalk-report --list-fields-info errata-systems

Die Reports werden im CSV-Format generiert und können so leicht weiter verarbeitet werden.

Der Report errata-systems dürfte der interessanteste sein, weil er Errata-Informationen pro System anzeigt, jedoch fehlt eine sehr wichtige Information: die Kurzbeschreibung des Erratum (z. B. Bugfix für Apache). Diese Information findet sich im Report errata-list-all:

1# spacewalk-report errata-systems|head -n1
2advisory,server_id,profile_name,hostname,ip_address,ipv6_address
3
4# spacewalk-report errata-list-all|head -n1
5advisory,type,cve,synopsis

Glücklicherweise lässt sich das Ganze dank der Allzweckwaffe awk einfach kombinieren:

1#!/bin/sh
2export LANG=C
3spacewalk-report errata-list-all|tail -n +2|awk -F, '{print $1","$NF}'|sort -k1 -t","> errata_all
4spacewalk-report errata-systems| tail -n +2|sort -k1 -t","> errata_systems
5echo "hostname,ip,errata,synopsis" > /tmp/errata-report-latest.csv
6join -t, -1 1 -2 1 errata_systems errata_all|awk -F, '{print $3","$5","$1","$NF}' 2>/dev/null 1>/tmp/errata-report-latest.csv
7rm errata_all errata_systems

Die erste Zeile generiert eine Auflistung aller verfügbaren Errata und sortiert diese (wichtig für den cut-Befehl in der 4.Zeile). Die zweite Zeile generiert eine Liste von anwendbaren Errata für alle registrierten Systeme. Beide Zeilen entfernen die Spaltenbezeichnungen, da diese in der dritten Zeile neu generiert werden. Die letzte Zeile fügt die Informationen beider Reports zusammen und schneidet dabei die erste (Errata), dritte (Hostname), fünfte (IP-Adresse) und letzte Spalte (Beschreibung) aus. Damit diese Informationen sinnvoll in einem anderen Programm (z. B. Microsoft Excel) verarbeitet werden können, werden in der dritten Zeile Spaltenbezeichnungen hinzugefügt.

Als Cronjob kann das Skript den Administrator dabei unterstützen, Wartungen abzustimmen - hier mit komfortablen Versand des Reports:

1$ cat /etc/cron.weekly/spacewalk_report.cron
2#!/bin/sh
3MAILTO=root
4
5#create report of current errata/system errata
6/opt/tools/errata_report.sh
7cat /tmp/errata-report-latest.csv

🙂

Übersetzungen: