diff options
-rwxr-xr-x | update-motd | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/update-motd b/update-motd new file mode 100755 index 0000000..50748d0 --- /dev/null +++ b/update-motd @@ -0,0 +1,39 @@ +#!/bin/bash + +# Ueberpruefung und ueberhaupt ein Update von der motd notwenig ist: +[ /var/log/changes -nt /etc/motd ] || \ +[ /etc/motd.head -nt /etc/motd ] || \ +[ /etc/motd.tail -nt /etc/motd ] || \ +exit 0 + +# letzte 20 Zeilen in /var/log/changes ermitteln und +# ab diesen dann die naechste Blockgrenze ermitteln +START="" +COUNT=19 + +while [ -z "${START}" -a "${COUNT}" -le 30 ]; do + COUNT="$((${COUNT}+1))" + START="$(tail -n "${COUNT}" /var/log/changes | head -n 1 | grep -o '^ *---')" +done + +# temporaere Datei erstellen, +# damit die motd in einem Schritt geaendert werden kann +TMPFILE="$(mktemp -t motd.XXXXXXXXXX)" + +# falls vorhanden wird der motd die /etc/motd.head vorrangestellt +[ -r /etc/motd.head ] && cat /etc/motd.head > "${TMPFILE}" + +# Aenderungen aus der /var/log/changes in die motd schreiben +tail -n "${COUNT}" /var/log/changes >> "${TMPFILE}" + +# falls vorhanden wird an die motd die /etc/motd.tail angehaengt +[ -r /etc/motd.tail ] && cat /etc/motd.tail >> ${TMPFILE} + +# motd jetzt richtig updaten +chmod 0644 "${TMPFILE}" +mv -f "${TMPFILE}" /etc/motd + +# update timestamp +touch -c /etc/motd /var/log/changes /etc/motd.tail /etc/motd.head + +exit 0 |