apt-feed-logbuch.sh
branchlenny
changeset 2 bc049aafe824
parent 0 117aabc28c6c
equal deleted inserted replaced
1:54d18ebcdf02 2:bc049aafe824
     9 
     9 
    10 unset  LC_ALL
    10 unset  LC_ALL
    11 export LANG=C
    11 export LANG=C
    12 export LC_CTYPE=en_US.UTF-8
    12 export LC_CTYPE=en_US.UTF-8
    13 
    13 
    14 APT_LOG="/var/log/apt/history.log"
    14 LOGBUCH_OPTS=""
    15 LINES_COUNT="/tmp/lines_count.dat"
       
    16 LOGBUCH_OPT=""
       
    17 
    15 
    18 if test -f /etc/default/ius.upgrade.conf; then
    16 if test -f /etc/default/ius.upgrade.conf; then
    19     . /etc/default/ius.upgrade.conf
    17     . /etc/default/ius.upgrade.conf
    20 fi
    18 fi
    21 
    19 
       
    20 TMPFILE1=$(tempfile)
       
    21 TMPFILE2=$(tempfile)
       
    22 trap "rm -f $TMPFILE1 $TMPFILE2" EXIT
       
    23 
    22 APT_CMD=$(ps -p $1 -o args=)
    24 APT_CMD=$(ps -p $1 -o args=)
    23 APT_TMP="/tmp/$$.tmp"
       
    24 APT_OUT="/tmp/$$.out"
       
    25 
    25 
    26 if [ $APT_LOG -nt $LINES_COUNT ]; then
    26 APT=`echo $APT_CMD | awk '{ print $1 }'`
    27   BEFOR=$(cat $LINES_COUNT)
    27 
    28   AFTER=$(wc -l < $APT_LOG)
    28 if [ "$APT" = "aptitude" ]; then
    29   LINES=$(($AFTER - $BEFOR - 1))
    29     APT_OPTS="--assume-yes --quiet --verbose --show-versions"
    30   echo APT: $APT_CMD > $APT_OUT
    30 else
    31   tail -n $LINES $APT_LOG | sed -e '/^Start-Date:/d;/^Commandline:/d;/^End-Date:/d' >> $APT_TMP
    31     APT_OPTS="--yes"
    32   perl -ne 'chomp; ($action, $packages) = split " ", $_, 2; print map { "- $action $_\n" } $packages =~ /\S+\s\(.*?\)/g' $APT_TMP >> $APT_OUT
       
    33   logbuch $LOGBUCH_OPT --message=@$APT_OUT
       
    34   # cleanup
       
    35   rm -f $APT_TMP $LINES_COUNT $APT_OUT
       
    36 fi
    32 fi
       
    33 
       
    34 APT_ARGS=$(echo $APT_CMD | sed "s/$APT[[:space:]]\+//")
       
    35 
       
    36 # Simulation
       
    37 $APT --simulate $APT_OPTS $APT_ARGS > $TMPFILE1 2>&1
       
    38 if tail -1 $TMPFILE1 | grep --quiet --ignore-case abort; then
       
    39     exit
       
    40 fi
       
    41 
       
    42 grep '^Inst\|Conf\|Remv\|Purg' $TMPFILE1 > $TMPFILE2
       
    43 
       
    44 logbuch $LOGBUCH_OPTS --message=apt:"$APT_CMD"@$TMPFILE2