summaryrefslogtreecommitdiffstats
path: root/update-motd
blob: 50748d0d5db842d3c710edc602a8832f120be353 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
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