Statusinfos beim SSH-Login vom Raspberry PI anzeigen via MOTD

Statusinfos beim SSH-Login vom Raspberry PI anzeigen via MOTD

Die sogenannte Message Of The Day (kurz MOTD) ist eine Textnachricht, die beim Login per SSH angezeigt wird. Sie eignet sich ideal dazu, um relevante Informationen über das System anzuzeigen. Dies kann beim RPI etwa die Hardware-Version sein. Oder Systeminformationen wie Temperatur/Signalstärke.

Standardmäßig zeigt Raspbian neben dem Lizenzhinweis nur die Kernel-Version sowie den letzten Login an. Bei Verwendung des Standard-Passwortes wird ein zusätzlicher Sicherheitshinweis eingeblendet. Da es sich bei Raspbian um eine Linux-Distribution handelt, ist es kein Problem, dies nach den eigenen Wünschen und Vorstellungen anzupassen.

Standard-Lizenztext entfernen

Der erwähnte Lizenztext mitsamt Haftungsausschluss beansprucht einiges an Platz. Ich würde diesen daher zunächst leeren, um diesen Platz selbst sinnvoller nutzen zu können:

sudo -i
echo > /etc/motd

Statischen Text könnten wir auch direkt dort hinterlegen. In meinem Falle soll jedoch alles dynamisch generiert werden. So lässt sich das ganze später auch gut per Ansible automatisieren. Daher genügt es an dieser Stelle, die Datei /etc/motd zu leeren.

Dynamische Informationen als MOTD beim SSH-Login

Zur dynamischen Generierung existiert der Ordner /etc/update-motd.d/. Dort lassen sich beliebige Shellskripte ablegen. Der Dateiname bestimmt die Ausführungsreihenfolge. Auf einer Raspbian-Installation befindet sich dort nur ein Skript namens 10-uname. Es gibt die Kernel-Version aus. Je nachdem, ob unsere eigenes Skript in der Ausgabe davor oder danach angezeigt werden soll, muss der Name also z.B. mit 09 oder 11 beginnen. Ich möchte es davor platzieren und erstelle daher die Datei 10-custom.

Für die Ausgabe auf dem Bild habe ich folgendes Skript erstellt:

#!/bin/bash
figlet $(hostname)
echo ""

echo "$(cat /proc/device-tree/model)"
echo ""

uptime | awk '{$1=$1;print}'

cpu=$(cat /sys/class/thermal/thermal_zone0/temp)
echo -e "GPU: $(/opt/vc/bin/vcgencmd measure_temp)\t\t CPU: $((cpu/1000)) C"

wlanQuality=$(iwconfig wlan0 | grep "Link Quality" | awk '{$1=$1;print}' | cut -d'=' -f 2 | cut -d' ' -f 1)
wlanRate=$(iwconfig wlan0 | grep "Bit Rate" | awk '{$1=$1;print}' | cut -d'=' -f 2 | cut -d' ' -f 1-2)
echo -e "WLAN quality: $wlanQuality \t\t Rate: $wlanRate"

Es zeigt in der Reihenfolge von oben nach unten folgende Informationen an:

  • Den aktuellen Hostname als ASCII-Art. Hierfür muss man figlet mit apt-get installieren.
  • Das Modell mit Hardwarerevision – besonders nützlich, wenn man ältere und neue PIs betreibt
  • Die Uptime mit Loadanzeige und der Anzahl eingeloggter Benutzer
  • Temperatur vom Prozessor und der GPU
  • Signalstärke der WLAN-Verbindung sowie ausgehandelte Datenübertragungsrate (macht im Falle eines LAN-Betriebes natürlich wenig Sinn)

Wie bereits zuvor erwähnt, ist dies nur ein Beispiel. Man kann beliebige Shell-Befehle ausführen und somit nahezu alle Informationen anzeigen. Man sollte aber darauf achten, dass die Ausführungszeit nicht zu hoch wird – sonst führt dies zu langsamen SSH-Logins. Ressourcenabfragen wie im obigen Beispiel sind unproblematisch. Sie verursachen eine Verzögerung von weniger als 100 Millisekunden und sind damit nicht spürbar.

Leave a Reply