summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexander Sulfrian <alexander@sulfrian.net>2012-10-04 00:47:46 +0200
committerAlexander Sulfrian <alexander@sulfrian.net>2012-10-04 00:47:46 +0200
commit6f73adafe1abdebc65fea82dd8ae05a0ceb0141b (patch)
tree92fa587da8646c8d7682e2701bbfca21c6fc37a8
downloadupdate-motd-6f73adafe1abdebc65fea82dd8ae05a0ceb0141b.tar.gz
update-motd-6f73adafe1abdebc65fea82dd8ae05a0ceb0141b.tar.bz2
update-motd-6f73adafe1abdebc65fea82dd8ae05a0ceb0141b.zip
inital version
-rwxr-xr-xupdate-motd39
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