Raspberry Pi und USB-LED blink(1): User-Login-Status anzeigen

Der blink(1) eignet sich hervorragend, um einen Status oder Zustand anzuzeigen. Interessant ist zum Beispiel der Login-Status eines Benutzers. Also, ob er eingeloggt bzw. angemeldet oder ob er ausgeloggt bzw. abgemeldet ist.

Was ist das blink(1)?

Raspberry Pi: USB-LED blink(1) von ThingM

blink(1) von ThingM ist ein USB-Stick mit einer RGB-Leuchtdiode, die man per Software steuern kann. Dabei kann blink(1) jede RGB-Farbe annehmen und benutzerdefiniert blinken, blitzen oder einfach nur dauerhaft leuchten. Interessant ist das für jede Art von Status-Anzeige, ohne Elektronik- oder andere Hardware-Basteleien.

Voraussetzungen

Damit dieses Beispiel funktioniert, wird vorausgesetzt, dass blink(1) und blink1-tool vollständig installiert und eingerichtet sind.

Funktionen im Detail

Zuerst ist zu klären, welche Informationen wir brauchen und wie wir sie bekommen. Außerdem definieren wir, wie blink(1) angesteuert werden soll. Exemplarisch testen wir die Funktionen Login-Zustand des Benutzers "pi". Selbstverständlich kann auch jeder andere Benutzer geprüft werden.

Im Prinzip wollen wir wissen, ist ein Benutzer eingeloggt ist, oder nicht. Hierfür brauchen wir also ein Kommando, mit dem wir eine einfache Frage mit Ja oder Nein beantwortet bekommen.

Ob ein Benutzer eingeloggt ist, können wir mit folgenden Kommandos prüfen:

w
who -a
users

Am ehesten kommt das Kommando "users" in Frage. Es ist eine String mit allen angemeldeten Benutzernamen.

Interessant ist für uns, ob der Benutzer eingeloggt ist. Wenn das der Fall ist, dann lassen wir blink(1) dauerhaft grün leuchten.

blink1-tool --green -q

Wenn der Benutzer nicht eingeloggt ist, dann lassen wir blink(1) dauerhaft rot leuchten.

blink1-tool --red -q

Script: Eingeloggte User abfragen und USB-LED blink(1) ansteuern

Wir legen zuerst eine Script-Datei an. Hier wählen wir als Speicherort das Home-Verzeichnis des Benutzers "pi". Wir wählen das deshalb, weil keine der Funktionen Root-Rechte brauchen.

nano /home/pi/checkuser.sh

Dann in die noch leere Datei folgende Zeilen kopieren:

#!/bin/bash

userlist=$(/usr/bin/users)

for u in $userlist; do
  if [ "$u" == "pi" ]; then
    #echo -e "login"
    /usr/local/bin/blink1-tool --green -q
    exit 0
  fi
done

#echo -e "logout"
/usr/local/bin/blink1-tool --red -q

Datei speichern, schließen, ausführbar machen und anschließend testen.

chmod +x /home/pi/checkuser.sh
/home/pi/checkuser.sh

Wenn das Script funktioniert, kann man anschließend einen Cronjob zum regelmäßigen Ausführen anlegen.

Cronjob anlegen

Dann legen wir einen Cronjob in der Benutzer-Crontab an.

crontab -e

Hier tragen wir folgende Zeile ein:

*/5 * * * * /home/pi/checkuser.sh >/dev/null 2>&1

Die Datei "checkuser.sh" wird alle 5 Minuten ausgeführt. Eventuelle Script-Ausgaben werden ins Nirvana umgeleitet. Es kommt also nirgendwo eine Rückmeldung. Deshalb setzen wir voraus, dass das Script funktioniert.

Die Datei speichern, schließen, abwarten und Tee trinken. Nach ein paar Minuten sollte der blink(1) rot leuchten. Nachdem der Benutzer "pi" eingeloggt wurde, sollte nach ein paar Minuten der blink(1) grün leuchten.

Troubleshooting

Was, wenn irgendwas nicht funktioniert? Es gibt zwei Knackpunkte. Einmal betrifft es das Script und der andere ist der Cronjob. Stellen Sie sicher, dass Sie keinen Tippfehler gemacht haben.

Stellen Sie sicher, dass sich die Programme "users" und "blink1-tool" in den absoluten Pfaden befinden. Prüfen kann man das mit "which users" und "which blink1-tool". Gegebenenfalls passen Sie die Pfade im Script an.

Weitere verwandte Themen:

Teilen:

Produktempfehlungen