#!/bin/sh # # etcdiff (deb-etcdiff?) shows how your current /etc dir # diverges from the debian distribution standard one. # # Copyright (C) 2008 Antonio Ospite # License: GPLv2 or later set -ex PROMPT_RM=-i DEBIANMIRROR="http://ftp.it.debian.org/debian" rm $PROMPT_RM -r temp && mkdir temp rm $PROMPT_RM -r archives && mkdir archives rm $PROMPT_RM -r conf && mkdir -p conf/patches USERMODE="-perm /o+r" MAXDEPTH="-maxdepth 1" #FILES="/etc/sysctl.conf /etc/init.d/procps /etc/passwd-" FILES=$(find /etc/ $MAXDEPTH -type f $USERMODE | grep -v '.dpkg-') for file in ${FILES}; do echo "-> $file" # Find out what installed package provides the config file PACKAGE=$(dpkg-query -S "$file" | cut -d ':' -f 1 | uniq 2> /dev/null) # Copy the whole file if it is not provided by default if [ "x$PACKAGE" == "x" ]; then cp "$file" conf/ continue fi # Get the package from the repository and diff FILENAME=$(apt-cache show $PACKAGE | grep ^Filename | cut -d ' ' -f 2-) ARCHIVE=$(basename $FILENAME) (cd archives && wget -q -nc -c $DEBIANMIRROR/$FILENAME) dpkg -x archives/$ARCHIVE temp/ diff -q temp/$file $file > /dev/null if [ $? -eq 1 ]; then diff -u temp/$file $file > conf/patches/$(basename $file).patch else echo "$file: not changed" fi done