Anzeige einer Installationshistorie

Aus Siduction Wiki DE
Wechseln zu: Navigation, Suche

Was macht das Script?

Das Bashscript ermittelt aus der Logdatei (/var/log/apt/history.log) von APT alle augerufenen apt-get Befehle mit denen Programmpakete installiert, entfernt oder rekonfiguriert wurden. Die Auflistung erfolgt in chronologischer Reihenfolge (ein Eintrag pro Zeile).

Ausgabe des Scriptes

[2010-11-03 17:23:06]  apt-get install cadaver
[2010-11-04 08:30:11]  apt-get dist-upgrade
[2010-11-07 16:02:51]  apt-get dist-upgrade
[2010-11-07 16:04:09]  apt-get remove --purge --yes linux-headers-2.6.35-7.slh.4-aptosid-amd64 linux-image-2.6.35-7.slh.4-aptosid-amd64
[2010-11-07 16:04:20]  apt-get remove --purge --yes linux-headers-2.6.36-0.slh.1-aptosid-amd64 linux-image-2.6.36-0.slh.1-aptosid-amd64
[2010-11-07 17:14:22]  apt-get remove --purge virtualbox-3.2
[2010-11-07 17:23:40]  apt-get install virtualbox-3.2
[2010-11-07 18:36:54]  apt-get --reinstall install linux-headers-2.6.36-0.slh.3-aptosid-amd64
[2010-11-09 21:53:27]  apt-get install dnsutils
[2010-11-10 08:57:24]  apt-get dist-upgrade
[2010-11-10 21:45:12]  apt-get install lm-sensors
[2010-11-11 14:22:55]  apt-get install convmv 
[2010-11-16 17:33:03]  apt-get dist-upgrade
[2010-11-17 10:28:05]  apt-get install qiv
[2010-11-17 13:59:24]  apt-get install ktorrent
[2010-11-19 18:48:59]  apt-get install git-svn
[2010-11-19 21:28:40]  apt-get remove --purge git-svn
[2010-11-19 21:29:30]  apt-get remove libapr1 libaprutil1 libserf-0-0 libsvn1 libsvn-perl
[2010-11-20 15:01:03]  apt-get dist-upgrade
[2010-11-21 21:47:13]  apt-get install kate
[2010-11-22 08:58:14]  apt-get dist-upgrade
[2010-11-25 08:31:09]  apt-get dist-upgrade
[2010-11-25 12:11:37]  apt-get install libimage-exiftool-perl
[2010-11-25 19:15:15]  apt-get install recoll antiword libid3-tools pstotext catdoc
[2010-11-26 08:27:15]  apt-get dist-upgrade


Alias für das Script einrichten

Folgende Zeile in der .bashrc eintragen um nicht immer den kompletten Pfad und Scriptnamen eintippen zu müssen. Der Alias ihist steht für Installationshistorie.

alias ihist='/pfad/zum/script/get_AptHistory.sh'


Programmlisting

#!/bin/bash
#
# Variablenbelegung
APT_LOG_PATH="/var/log/apt"
APT_LOG_FILE="history.log"
STRING_START_DATE="Start-Date:"
STRING_CMD_LINE="Commandline:"

# Funktionsdefinitionen
init_array()
{
	IFS=#
	ROW=""
	INDEX_APTHIST=""
}

# Hauptprogramm

# Array initialisieren
init_array

# Datum und Zeit der Installation ermitteln und ins Array schreiben
while read ROW
	do
	TMP1=`echo $ROW | egrep $STRING_START_DATE`
	if [ "$TMP1" ]
		then
		START_DATE=`echo $TMP1 | awk '{print $2,$3}'`
		CMD_LINE=`echo $TMP2 | awk '{print $2,$3}'`
		ARRAY_APTHIST[$INDEX_APTHIST]=$START_DATE
		INDEX_APTHIST=`expr $INDEX_APTHIST + 1`
	fi
done < $APT_LOG_PATH/$APT_LOG_FILE

# Array initialisieren
init_array

# Befehle ermitteln und ins Array schreiben
while read ROW
	do
	TMP2=`echo $ROW | egrep $STRING_CMD_LINE`
	if [ "$TMP2" ]
		then
		CMD_LINE=`echo ${TMP2#$STRING_CMD_LINE }`
		ARRAY_APTHIST[$INDEX_APTHIST]=${ARRAY_APTHIST[$INDEX_APTHIST]}";"$CMD_LINE
		INDEX_APTHIST=`expr $INDEX_APTHIST + 1`
	fi
done < $APT_LOG_PATH/$APT_LOG_FILE

init_array
# Formatierte Ausgabe
for ROW in  ${ARRAY_APTHIST[@]}
	do
	echo $ROW | awk -F";" '{printf("%s%s%s  %s\n","[",$1,"]",$2,"]")}'
done

#EOF