6.7. Bildschirmblockade (DaSo)

Oftmals ist es wünschenswert ein Gerät im Netzwerk für eine gewisse Zeit in irgendeiner Form zu blockieren. Im Kontext unseres Projektes möchte ein Lehrer eventuell die Aufmerksamkeit der Schüler auf sich lenken, und nicht den Browser. Hierfür war ein Feature in Planung, welches genau solche Funktionen zur Verfügung stellt.

Obwohl es dieses Feature aufgrund von Zeitproblemen nicht in den aktuellen Stand des Tools geschafft hat, werden hier die bereits entwickelten Ideen aufgefasst.

Die Blockierung kann mit einer Vielzahl an Ansätzen vollzogen werden. Deaktivierung von Maus und Tastatur auf einem Remote-Gerät kommen in den Sinn. Dazu das Abdecken des gesamten Bildschirms mit einer Art Sperrbild. Auch eine Deaktivierung des externen Internetzugangs könnte von Interesse sein.

Es existieren bereits verschiedenste Tools die genau diese Anforderungen für uns leisten, so wie “xinput” mit dem wir Input Geräte wie Maus und Tastatur einfach deaktivieren können (Abbildung zum deaktivieren von Eingabegeräten)

deactivate

Abb. 6.18 Befehl zum deaktivieren von Eingabegeräten

Zur Deaktivierung des Internets dient “nmcli”:

sudo nmcli networking off

Diese Befehle würden ganz einfach über SSH auf einem anderen Gerät aufgerufen werden. Zur Deaktivierung der Blockade würde das gleiche passieren, nur dieses Mal mit aktivierenden Befehlen.

In einer perfekten Welt ist diese Vorgehensweise durchaus ausreichend, jedoch wird es problematisch, sobald man Situationen miteinbezieht, in denen ein Gerät nicht richtig entblockt wird. In Situationen, in denen das blockierende Gerät nicht mehr aktiv ist, sei es durch manuelles Herunterfahren oder Stromverlust, würde das blockierte Gerät sich nicht mehr selbständig entblocken können. Nachdem in unserer spezifischen Situation die Geräte keine persistenten Änderungen zulassen, wäre nach einem Neustart per Hardware-Taste alles entblockt. Es ist aber im allgemeinen keine gute Idee, als einzigen Weg eine solche Situation zu lösen, hardware- bzw. systemspezifische Eigenschaften auszunutzen. Wir würden uns wünschen, dass mit dem Herunterfahren des blockierendem Geräts auch alle von diesem blockierten Geräte freigelassen werden.

Auch hier kann uns wieder SSH helfen.

Wird ein Prozess, welcher eine gewisse Zeit andauert, über SSH remote gestartet, so wird dieser mit der SSH-Verbindung “am Leben” gehalten. Schließt sich die SSH-Verbindung, so wird auch der Prozess auf dem Remote-Gerät beendet.

Leider bieten die oben genannten Befehle keine solche Funktionalität. Sie bearbeiten lediglich gewisse Dateien auf dem Remote-System und terminieren sofort. Das bedeutet dass wir einen eigenen Prozess erzeugen müssen, welcher uns ähnliche Funktionen bietet, aber nach Terminierung alles lässt wie vorher.

Der letztendliche Plan zur Umsetzung war ein kleines graphisches Programm, welches automatisch den kompletten Bildschirm im Vollbild einnimmt und keine Eingaben akzeptiert. Dieses könnte eine vom Blockierenden festgelegte Nachricht anzeigen (z.B. “Bitte Augen nach vorne”), oder einen transparenten Hintergrund besitzen, um den letzten Bildschirminhalt weiter betrachten zu können. Das Programm würde sich nur über die Terminierung des Prozesses beenden lassen, welcher optimalerweise über SSH durch ein anderes Gerät verwaltet wird. Eine solche Herangehensweise setzt natürlich auch voraus, dass Tastenkombinationen, wie ALT+F4 oder jegliche andere, welche den Prozess stoppen könnte, deaktiviert sind.

In der Anwendung muss ein Gerät den Prozess einfach per SSH auf einem anderen ausführen, und solange beide Geräte nun online bleiben, wird das Andere gesperrt sein:

ssh "192.168.122.138" edux-com -bs "Aufpassen"