#!/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