Raspberry Pi MOTD – der Pi begrüßt dich mit Systemstatus

NEWS



RASPBERRY PI MOTD – DER PI BEGRÜSST DICH MIT SYSTEMSTATUS


Zwei Laptops mit grünen Terminal-Zeilen und Raspberry Pi Platine

Jeder Login beantwortet nebenbei die Frage: Geht es dir gut?

Kurz gesagt: Was bringt eine eigene Begrüßung beim SSH-Login?

Wer sich per SSH auf einem kopflosen Server anmeldet, sieht zuerst eine Textwand aus Lizenzhinweisen – und weiß danach genau so wenig wie vorher. Ein selbst gebautes Raspberry Pi MOTD ersetzt diese Standardmeldung durch das, was wirklich interessiert: Temperatur, Auslastung, freier Platz, Laufzeit, IP-Adresse und offene Updates. Zwei Sekunden Lesen statt fünf Befehle tippen.

Die Kurzfassung:

  • Zwei Wege: Die Datei /etc/motd zeigt immer denselben festen Text. Skripte im Verzeichnis /etc/update-motd.d erzeugen ihre Ausgabe bei jeder Anmeldung neu – nur damit werden Livewerte möglich.
  • Ein Skript genügt: Datei anlegen, Werte per vcgencmd, free, df und uptime einsammeln, mit chmod +x ausführbar machen. Kein Neustart, kein Dienst, keine Konfigurationsdatei.
  • Reihenfolge über Nummern: Die Dateinamen beginnen mit einer zweistelligen Zahl (10-, 20-, 30-). Ohne führende Null landet 100- vor 20-.
  • Rechte beachten: Ohne Ausführungsrecht passiert schlicht gar nichts – und weil die Skripte als root laufen, darf niemand außer root sie ändern dürfen.
  • Tempo im Blick: Jede Zeile kostet Zeit bei jeder Anmeldung. Alles über einer Sekunde gehört per Cronjob vorberechnet.
  • Fertige Alternative: fastfetch liefert in einer Zeile ein hübsches Systemprofil mit ASCII-Logo – der Preis dafür ist etwas mehr Laufzeit.

Raspberry Pi MOTD: statische Datei oder dynamisches Skript?

MOTD steht für Message of the Day und ist eine Unix-Tradition aus der Zeit der Großrechner: eine Nachricht, die der Administrator allen Benutzern beim Anmelden vorlegt. Ausgegeben wird sie nicht von der Shell und auch nicht vom SSH-Dienst selbst, sondern vom PAM-Modul pam_motd, das bei jeder erfolgreichen Textanmeldung ausgeführt wird. Zuständig sind die Dateien /etc/pam.d/sshd und /etc/pam.d/login.

Die statische Variante ist die Datei /etc/motd. Was dort steht, erscheint unverändert bei jeder Anmeldung. Auf Raspberry Pi OS enthält sie den Debian-Lizenzhinweis mit dem Satz zur fehlenden Gewährleistung – informativ beim ersten Mal, ab dem zweiten Mal reines Rauschen. Für einen Hinweis an Mitbenutzer („Dieser Pi wird sonntags neu gestartet") ist sie trotzdem der richtige Ort.

Die dynamische Variante ist das Verzeichnis /etc/update-motd.d. Jede ausführbare Datei darin ist ein kleines Programm, dessen Ausgabe direkt in der Begrüßung landet. pam_motd ruft sie beim Anmelden über run-parts in alphabetischer Reihenfolge auf, sammelt die Ausgabe in /run/motd.dynamic und zeigt sie an – erst danach folgt der statische Text aus /etc/motd. Deshalb ist es sinnlos, /run/motd.dynamic von Hand zu bearbeiten: Die Datei wird bei der nächsten Anmeldung überschrieben.

Ein Unterschied zwischen den Systemen ist wichtig: Ubuntu Server bringt das Verzeichnis fertig gefüllt mit, mit Kopfzeile, Hilfetext, Update-Zähler und dem Paket landscape-common für die Systemwerte. Auf Raspberry Pi OS ist es leer oder fehlt ganz – dann legt man es mit sudo mkdir -p /etc/update-motd.d einfach an. Nicht zu verwechseln ist das Ganze mit /etc/issue: Dieser Text erscheint vor der Anmeldung am Bildschirm, die MOTD erst danach.

Raspberry Pi MOTD einrichten – Schritt für Schritt

  1. Standardtext leeren: sudo truncate -s 0 /etc/motd entfernt den Lizenzblock, ohne die Datei zu löschen. Wer ihn behalten möchte, sichert ihn vorher mit sudo cp /etc/motd /etc/motd.alt.
  2. Verzeichnis prüfen: ls -l /etc/update-motd.d. Kommt eine Fehlermeldung, legt sudo mkdir -p /etc/update-motd.d das Verzeichnis an.
  3. Skript anlegen: sudo nano /etc/update-motd.d/10-sysinfo – bewusst ohne Dateiendung. Ein Name wie 10-sysinfo.sh wird von run-parts stillschweigend übergangen.
  4. Kopfzeile nicht vergessen: Die erste Zeile muss #!/bin/bash lauten, sonst weiß das System nicht, womit es die Datei ausführen soll.
  5. Rechte setzen: sudo chmod 755 /etc/update-motd.d/10-sysinfo und sudo chown root:root /etc/update-motd.d/10-sysinfo. Ohne das Ausführungsrecht bleibt die Begrüßung leer.
  6. Testen ohne Abmelden: sudo run-parts /etc/update-motd.d/ zeigt sofort, was beim nächsten Login erscheint. Fehlermeldungen der Skripte werden hier ebenfalls sichtbar.
  7. Laufzeit messen: time sudo run-parts /etc/update-motd.d/ > /dev/null. Der Wert hinter real ist die Verzögerung, die jede künftige Anmeldung kostet.
  8. Echte Anmeldung prüfen: Neue SSH-Sitzung öffnen. Erscheint nichts, hilft die Fehlersuche weiter unten im Abschnitt zu den Stolpersteinen.

Das Systemstatus-Skript: Temperatur, Last, Speicher und IP

Das folgende Skript sammelt die wichtigsten Werte ein und gibt sie farbig formatiert aus. Es kommt ohne Zusatzpakete aus, alle verwendeten Befehle sind auf Raspberry Pi OS vorhanden:

#!/bin/bash
C="e[1;32m"; N="e[0m"
MODELL=$(cat /proc/device-tree/model | tr -d "")
IP=$(hostname -I | awk '{print $1}')
TEMP=$(vcgencmd measure_temp | cut -d= -f2)
LAST=$(cut -d" " -f1-3 /proc/loadavg)
RAM=$(free -h | awk '/Mem:/{print $3" von "$2}')
PLATZ=$(df -h / | awk 'NR==2{print $4" frei von "$2}')
LAUF=$(uptime -p)
CONT=$(docker ps -q 2>/dev/null | wc -l)
UPD=$(cat /var/lib/motd-updates 2>/dev/null || echo "?")
printf "n ${C}%s${N}nn" "$MODELL"
printf " Adresse   %sn" "$IP"
printf " Temperatur %sn" "$TEMP"
printf " Auslastung %sn" "$LAST"
printf " Speicher  %sn" "$RAM"
printf " Platte    %sn" "$PLATZ"
printf " Laufzeit  %sn" "$LAUF"
printf " Container %s aktivn" "$CONT"
printf " Updates   %s offennn" "$UPD"

Die Zeile mit den Updates greift bewusst nicht selbst auf die Paketverwaltung zu, sondern liest eine vorbereitete Zahl aus einer Datei. Die schreibt ein zweites, kleines Skript unter /etc/cron.daily/motd-updates, das ebenfalls ausführbar sein muss: apt-get -s upgrade 2>/dev/null | grep -c ^Inst > /var/lib/motd-updates. So kostet die Anzeige beim Anmelden praktisch nichts, während die Simulation im Hintergrund ihre Sekunden verbrauchen darf. Wie das Update selbst danach abläuft, ändert sich dadurch nicht.

AnzeigeBefehlHinweis
Temperaturvcgencmd measure_tempAlternativ cat /sys/class/thermal/thermal_zone0/temp, dann durch 1000 teilen
Auslastungcut -d" " -f1-3 /proc/loadavgDrei Werte für 1, 5 und 15 Minuten; ab Kernanzahl wird es eng
Arbeitsspeicherfree -hSehr schnell, keine Vorberechnung nötig
Freier Platzdf -h /Warnt früh vor der vollen Systempartition
Laufzeituptime -pVerrät sofort, ob es zwischendurch einen Neustart gab
IP-Adressehostname -IGibt alle Adressen aus, awk filtert die erste heraus
Containerdocker ps -q | wc -lNur sinnvoll, wenn Docker installiert ist
Updatesvorberechnete DateiDirekte Abfrage bremst die Anmeldung spürbar

Farben und ASCII-Kunst im Terminal

Farbe entsteht über sogenannte ANSI-Sequenzen. e[1;32m schaltet auf fettes Grün, e[1;31m auf Rot, e[0m setzt zurück. Wichtig ist der Reset am Ende jeder farbigen Ausgabe – sonst behält die Eingabeaufforderung die Farbe bei. Mit echo -e oder besser printf werden die Sequenzen tatsächlich interpretiert; ein einfaches echo gibt sie als Buchstabensalat aus.

Praktisch sind farbige Schwellwerte: Ein Vergleich wie if [ "$TEMP_ZAHL" -gt 70 ]; then FARBE="e[1;31m"; fi färbt die Temperatur erst rot, wenn es wirklich warm wird. Damit sieht man schon beim Anmelden, ob der Kühler seine Arbeit macht oder ob der Pi bereits drosselt – gerade nach dem Übertakten ist das die nützlichste Zeile der ganzen Begrüßung.

Für den großen Auftritt sorgt ASCII-Kunst. sudo apt install figlet installiert den Klassiker, figlet Serverraum erzeugt daraus einen Schriftzug aus Zeichen. In einem Skript namens 00-header steht der Name des Rechners dann als Banner ganz oben. Wer es bunt mag, schickt die Ausgabe durch lolcat. Ein Rat dazu: Ein Banner, das jeden Bildschirm füllt, wird nach der dritten Anmeldung lästig – fünf Zeilen Kopf und acht Zeilen Werte sind ein gutes Maß.

Fertige Lösungen im Vergleich

Nicht jeder möchte ein Skript schreiben. Es gibt fertige Werkzeuge, die sich mit einer einzigen Zeile in ein Skript unter /etc/update-motd.d einbinden lassen – die Unterschiede liegen vor allem bei Pflegezustand und Startzeit.

LösungStärkeHaken
fastfetchSchnell, aktiv gepflegt, in aktuellen Debian-Quellen enthalten, per JSON-Datei bis ins Detail konfigurierbarZeigt Systemprofil statt Livewerte – Temperatur und Container fehlen ohne eigene Module
neofetchDer bekannte Klassiker, unzählige Anleitungen im NetzDie Entwicklung wurde eingestellt; als reines Shell-Skript zudem deutlich langsamer
pfetchWinziges Skript, startet nahezu verzögerungsfreiSehr wenige Werte, kaum anpassbar
landscape-commonLiefert unter Ubuntu die bekannte Übersicht mit Last, Speicher, Prozessen und TemperaturUbuntu-Paket, auf Raspberry Pi OS nicht verfügbar
Eigenes SkriptGenau die Werte, die zum jeweiligen Pi passen, und praktisch keine LaufzeitMuss man einmal selbst schreiben

Eine gute Mischung ist üblich: fastfetch oder figlet als Kopfbereich, darunter ein eigenes Skript mit den Livewerten. Wer einen Pi mit Ubuntu Server betreibt, findet in /etc/update-motd.d übrigens schon eine ganze Sammlung vor und muss dort eher aufräumen als ergänzen.

Anmeldung schnell halten und Standardmeldungen abschalten

Jede Zeile der Begrüßung wird bei jeder Anmeldung neu berechnet – auch bei Anmeldungen von Skripten und Backup-Werkzeugen. Erfahrungswerte aus der Community zeigen: Unter etwa 300 Millisekunden merkt niemand etwas, ab einer Sekunde wirkt der Login träge, ab drei Sekunden nervt er. Die üblichen Bremsklötze sind Netzwerkzugriffe wie ping oder curl, Abfragen der Paketverwaltung, du über große Verzeichnisse und Sensorabfragen mit Wartezeit.

Das Gegenmittel ist immer dasselbe: Der langsame Teil wandert in einen Cronjob oder einen systemd-Timer und schreibt sein Ergebnis in eine Datei, die das MOTD-Skript nur noch ausliest. Unter Ubuntu lohnt außerdem ein Blick auf 50-motd-news – dieses Skript holt Nachrichten aus dem Internet und ist bei schlechter Verbindung der häufigste Grund für zähe Anmeldungen. Abschalten lässt es sich über den Eintrag ENABLED=0 in /etc/default/motd-news.

Zum Abschalten der Standardmeldung führen mehrere Wege. sudo truncate -s 0 /etc/motd leert den statischen Text. Nicht mehr benötigte dynamische Skripte macht sudo chmod -x /etc/update-motd.d/10-help-text stumm, ohne sie zu löschen. Und wer beim Anmelden gar nichts sehen will – etwa auf einem Rechner, auf den ständig Skripte zugreifen –, legt im Benutzerverzeichnis mit touch ~/.hushlogin eine leere Datei an: Sie unterdrückt die komplette Begrüßung inklusive der Zeile mit der letzten Anmeldung, und zwar nur für diesen Benutzer.

Fehler und Stolpersteine

  • Skript nicht ausführbar: Der mit Abstand häufigste Fehler. Ohne chmod +x wird die Datei kommentarlos übersprungen – es gibt keine Fehlermeldung, nur eine leere Begrüßung.
  • Dateiendung im Namen: run-parts ignoriert Dateien mit Punkt im Namen. 10-sysinfo.sh, 20-info.bak oder 30-alt.txt laufen nie. Erlaubt sind Buchstaben, Ziffern, Bindestriche und Unterstriche.
  • Falsche Sortierung: Sortiert wird als Text, nicht als Zahl. 100-fussnote erscheint vor 20-sysinfo. Zweistellige Präfixe mit führender Null lösen das Problem dauerhaft.
  • Doppelte Ausgabe: Steht in /etc/ssh/sshd_config die Zeile PrintMotd yes, gibt der SSH-Dienst die Meldung zusätzlich zu PAM aus. Auf Debian-Systemen gehört dort no hin.
  • Langsame Befehle: Ein apt update oder ein Ping ins Internet im MOTD-Skript verzögert jede einzelne Anmeldung, auch die von automatischen Sicherungen. Werte vorberechnen statt live abfragen.
  • Rechte zu großzügig: Die Skripte laufen mit root-Rechten. Ein Skript, das jedem Benutzer zum Schreiben offensteht, ist eine offene Hintertür – root:root und 755 sind Pflicht. Mehr dazu im Beitrag zum Absichern des Pi.
  • Umlaute und Sonderzeichen: Wird der Text verstümmelt dargestellt, passt die Zeichensatz-Einstellung des Terminals nicht. Reine ASCII-Zeichen im Banner sind die sichere Wahl.

Häufige Fragen zum MOTD auf dem Raspberry Pi

Wofür steht die Abkürzung MOTD?
Für Message of the Day, also die Nachricht des Tages. Der Begriff stammt aus der Frühzeit von Unix, als Administratoren ihren Benutzern auf diesem Weg Wartungstermine mitgeteilt haben.

Warum erscheint meine Begrüßung nicht?
In neun von zehn Fällen fehlt das Ausführungsrecht oder der Dateiname enthält einen Punkt. sudo run-parts /etc/update-motd.d/ zeigt sofort, ob das Skript grundsätzlich läuft – kommt dort eine Ausgabe, aber beim Anmelden nicht, liegt es an einer .hushlogin-Datei im Benutzerverzeichnis.

Sehe ich die Meldung auch im Desktop-Terminal?
Nein. Die MOTD erscheint nur bei einer Anmeldung über PAM, also bei SSH und an der Textkonsole. Ein Terminalfenster in der grafischen Oberfläche oder eine VNC-Sitzung startet keine neue Login-Shell und zeigt deshalb nichts an.

Laufen die Skripte als root?
Ja, pam_motd führt sie mit Systemrechten aus. Das ist praktisch, weil damit auch docker ps und Sensorzugriffe ohne Umwege funktionieren – zugleich der Grund, warum die Dateirechte streng bleiben müssen.

Wie messe ich, wie lange die Begrüßung dauert?
Mit time sudo run-parts /etc/update-motd.d/ > /dev/null. Der Wert hinter real ist die zusätzliche Wartezeit pro Anmeldung. Alles unter einer halben Sekunde ist unauffällig.

Kann ich fastfetch direkt einbinden?
Ja. Ein Skript /etc/update-motd.d/01-fastfetch mit der Kopfzeile #!/bin/sh und dem Aufruf fastfetch genügt. Sinnvoll ist eine schlanke Konfiguration, damit nur die wirklich gewünschten Zeilen erscheinen.

Ersetzt das MOTD ein echtes Monitoring?
Nein. Es zeigt einen Zustand genau in dem Moment, in dem man sich anmeldet. Wer Verläufe und Alarme braucht, kombiniert es mit Uptime Kuma oder Grafana.

Wie bekomme ich alles wieder weg?
Die eigenen Skripte aus /etc/update-motd.d löschen und den gesicherten Text nach /etc/motd zurückkopieren. An den PAM-Dateien selbst muss dafür nichts geändert werden.

Fazit

Ein eigenes Raspberry Pi MOTD ist eine der Anpassungen mit dem besten Verhältnis aus Aufwand und Nutzen: eine halbe Stunde Arbeit, danach liefert jede Anmeldung ungefragt den kompletten Gesundheitszustand des Systems. Unsere klare Empfehlung: Schreib ein eigenes Skript statt ein fertiges Werkzeug einzubinden – nur so stehen genau die Werte dort, die für den jeweiligen Pi zählen, und die Anmeldung bleibt schnell. Halte dich an drei Regeln: zweistelliges Nummernpräfix, keine Dateiendung, und alles, was länger als eine Sekunde braucht, wandert in einen Cronjob. Besonders auf einem kopflos betriebenen Server ersetzt diese kleine Textausgabe eine ganze Handvoll Befehle, die man sonst jedes Mal tippt.

* = Affiliate Link (raspi-config.de ist Teilnehmer des Partnerprogramms von Amazon EU, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu Amazon.de Werbekostenerstattung verdient werden kann.)


VORSCHAU


Was Dich im Raspberry Pi Videokurs erwartet.


Play klicken & Video abspielen.

QUIZ


Prüfe Deinen aktuellen Wissensstand.

Raspberry Pi Quiz starten

Bild anklicken & Quiz starten.

NEWS



EMPFEHLUNG



Danke für Deine Weiterempfehlung!

© 2026 raspi-config.de | Datenschutz | Impressum