55 lines
1.3 KiB
Plaintext
55 lines
1.3 KiB
Plaintext
|
|
#! /bin/bash
|
||
|
|
# Script from Frans Pop
|
||
|
|
|
||
|
|
set -e
|
||
|
|
|
||
|
|
if [ -z "$1" ]; then
|
||
|
|
echo "Usage: insserv-seq-changes /var/lib/insserv/<old bootscripts tarball>"
|
||
|
|
exit 1
|
||
|
|
fi
|
||
|
|
|
||
|
|
oldtar="$(tar tzf $1)"
|
||
|
|
for i in S $(seq 0 6); do
|
||
|
|
echo "Runlevel $i"
|
||
|
|
new="$(cd /etc/rc$i.d; ls -1 [KS]* | sort | nl)"
|
||
|
|
old="$(echo "$oldtar" | grep "^rc$i.d/[KS]" | cut -d/ -f2 | sort | nl)"
|
||
|
|
case $i in
|
||
|
|
S|0|6)
|
||
|
|
old="$(echo "$old" | sed -r "s/[KS][0-9]+//")"
|
||
|
|
new="$(echo "$new" | sed -r "s/[KS][0-9]+//")"
|
||
|
|
;;
|
||
|
|
*)
|
||
|
|
old="$(echo "$old" | sed -r "s/([KS])[0-9]+/\1_/")"
|
||
|
|
new="$(echo "$new" | sed -r "s/([KS])[0-9]+/\1_/")"
|
||
|
|
;;
|
||
|
|
esac
|
||
|
|
echo "$new" | while read num cmd; do
|
||
|
|
oldnum=$(echo "$old" | grep "[[:space:]]$cmd$" | awk '{print $1}')
|
||
|
|
if [ "$oldnum" ]; then
|
||
|
|
diff=$(($num - $oldnum))
|
||
|
|
else
|
||
|
|
oldnum="---"
|
||
|
|
diff=""
|
||
|
|
fi
|
||
|
|
if [ ${#cmd} -ge 16 ]; then
|
||
|
|
echo -e "$cmd\t$num\t$oldnum\t$diff"
|
||
|
|
elif [ ${#cmd} -ge 8 ]; then
|
||
|
|
echo -e "$cmd\t\t$num\t$oldnum\t$diff"
|
||
|
|
else
|
||
|
|
echo -e "$cmd\t\t\t$num\t$oldnum\t$diff"
|
||
|
|
fi
|
||
|
|
done
|
||
|
|
echo "$old" | while read num cmd; do
|
||
|
|
if ! echo "$new" | grep -q "[[:space:]]$cmd$"; then
|
||
|
|
if [ ${#cmd} -ge 16 ]; then
|
||
|
|
echo -e "$cmd\t---\t$oldnum"
|
||
|
|
elif [ ${#cmd} -ge 8 ]; then
|
||
|
|
echo -e "$cmd\t\t---\t$oldnum"
|
||
|
|
else
|
||
|
|
echo -e "$cmd\t\t\t---\t$oldnum"
|
||
|
|
fi
|
||
|
|
fi
|
||
|
|
done
|
||
|
|
echo
|
||
|
|
done
|