Openbox als Prüfungsumgebung

Tux

Eine computergestützte Prüfung bietet den Vorteil, dass die Prüfungsarbeiten wesentlich einfacher elektronisch ausgewertet werden können bzw. in maschinenlesbaren Form vorliegen und weiterverarbeitet werden können. In meinem Beitrag -> Ubuntu 16.04 mit Openbox als Kiosksystem habe ich die Installation und Konfiguration einer gesicherten Umgebung für ein flexibles System beschrieben, auf dem solch eine Prüfungsumgebung aufgebaut werden kann.

Weiterführende Beiträge dazu sind:
-> Ubuntu 16.04 mit Openbox als Kiosksystem
-> Tasten sperren oder Belegung verändern
-> Batch-Konvertierung HTML nach PDF
-> Dateien mit Batch-Script umbenennen
-> Tipps zur Openbox als Prüfungsrechner (I)

Hier möchte ich nun einige Details beschreiben, mit der eine Prüfungssoftware in dieser Umgebung betrieben werden kann. Als Geräte stehen eine NAS zum Laden der Prüfungsaufgabe und zur zentralen Speicherung der Antworten, sowie PCs mit Openbox zur Verfügung. Zur Sicherheit werden die Antworten der Prüfungsteilnehmer von der Prüfungssoftware regelmäßig lokal gespeichert und zusätzlich auf die NAS kopiert. Dazu wird für jeden Prüfungsteilnehmer ein eigenes Verzeichnis auf der NAS benötigt, das gemountet wird.

Hinweis: Es handelt sich hier um einen Versuch, der nur für wenige Prüfungsteilnehmer realisierbar ist!
Auch wenn man viele Konfigurationsschritte automatisieren könnte, ist die Verwendung eines Webservers für Prüfungszwecke wesentlich besser geeignet.

Vorbereitungen

NAS für Sicherungskopien vorbereiten

Auf der NAS wird für jeden Prüfungsteilnehmer ein eigenes Verzeichnis mit individuellem Passwort und auf dem PC ein Useraccount angelegt. Die Zugangsdaten zur NAS werden auf dem PC des Teilnehmers der Prüfung in der Datei /root/.securecred/.cred hinterlegt.

username=<Username auf NAS>
password=<Passwort auf NAS>

In einem weiteren Laufwerk auf der NAS befindet sich ggfls. die Aufgabe zur Prüfung, die z.B. aus einem passwortgeschützten PDF bestehen kann. In der Datei /etc/fstab werden die Laufwerke gemappt.

//<IP der NAS>/<Verzeichnis des Prüfungsteilnehmer> /mnt/answer cifs credentials=/root/.securecred/.cred,vers=1.0 0 0
//<IP der NAS>/Aufgabe /mnt/question cifs credentials=/root/.securecred/.cred,vers=1.0 0 0

vers=1.0 ist wählt die Protokollversion aus, die von älteren NAS-Systemen verwendet wird und ist bei neueren Systemen die SMB 2 und höher verwenden nicht benötigt wird.
Die Verzeichnisse /mnt/answer und /mnt/question müssen auf den Client-PCs angelegt werden. Dann kann gemountet werden.

:~$ sudo mkdir /mnt/answer
:~$ sudo mkdir/question
:~$ sudo mount -a -v

Um die Antworten der Prüfung zu sichern, benötigt man ein Skript, dass die lokal liegenden Dateien auf die NAS kopiert. Dabei kann es sich auch um Datenbankexporte handeln. Dass der Kopiervorgang z.B. alle 5 Minuten erfolgt, sorgt ein Cronjob, den man mit

:~$ sudo crontab -e

aufruft und in dem man das Script einträgt:

# m h dom mon dow command
*/5 * * * * /usr/scripts/copydoc.sh

Was das Skript genau erledigen muss, hängt davon ab, welche Prüfungssoftware verwendet wird. Verwendet man z.B. für Freitextantworten Notepadqq, das regelmäßig nur eine Textdatei speichert, genügt das Kopieren dieser Datei auf die NAS. Sollen Datenbankinhalte gesichert werden, steigt der Aufwand für das Skript entsprechend.

Programme auf dem Desktop platzieren

Openbox bietet die Möglichkeit, jedes Programm beim Öffnen an einer vorgegebenen Position anzuzeigen. Die Vorgaben hierzu trägt man in die Datei rc.xml ein, die bei einer systemweiten Konfiguration der Openbox unter /etc/xdg/openbox und bei benutzerspezifischer Konfiguration unter /home/<user>/.config/openbox zu finden ist. Im Abschnitts <applications> trägt man die Fensterpositionen ein, die für den PDF-Viewer Evince und die Uhr dclock so aussehen könnten.

<application name="evince">
  <position force="yes">
    <x>1000</x>
    <y>5</y>
  </position>
  <size>
    <height>1000</height>
    <width>900</width>
  </size>
  <decor>no</decor>
  <maximized>no</maximized>
</application>
<application name="dclock">
  <position force="yes">
    <x>1700</x>
    <y>1005</y>
  </position>
  <size>
    <height>50</height>
    <width></width>
  </size>
  <decor>no</decor>
  <maximized>no</maximized>
</application>

Damit öffnet der PDF-Viewer in der rechten Bildschirmhälfte (1000 Pixel vom linken Rand entfernt) und die Uhr im Eck rechts unten.

SSH Zugang zu den Clients

Die einfachste Methode mit SSH ohne Schlüssel die Clientrechner zu steuern ist, in der Datei /etc/ssh/sshd_config in der Zeile

PasswordAuthentication yes

das Doppelkreuz (hash) zu entfernen.
Den passwortlosen Login per Key beschreibt -> das Wiki von Thomas Krenn sehr ausführlich.

Teilnehmer der Prüfung einloggen lassen

Um zu vermeiden, dass vor Beginn der Prüfung bereits an den Clients eingeloggt um herum gespielt wird, blockiert man den Useraccount, indem man das Passwort außer Kraft setzt.

:~$ ssh -t <Adminuser auf Zielrechner>@<IP des Zielrechners> sudo passwd -l <Prüfungsteilnehmer>

Der Befehl erweitert des Passworthash um ein Zeichen, so dass er wertlos wird. Zum Beginn der Prüfung wird mit

:~$ ssh -t <Adminuser auf Zielrechner>@<IP des Zielrechners> sudo passwd -u <Prüfungsteilnehmer>

dieses Zeichen wieder entfernt und das Passwort des Prüfungsteilnehmer funktioniert wieder. Alternativ kann man hier auch das password expire verwenden.

:~$ ssh -t <Adminuser auf Zielrechner>@<IP des Zielrechners> sudo usermod --expiredate 1 <Username des Prüfungsteilnehmer>  #expired
:~$ ssh -t <Adminuser auf Zielrechner>@<IP des Zielrechners> sudo usermod --expiredate "" <Username des Prüfungsteilnehmer>  #wieder enabled

Teilnehmer der Prüfung abmelden

Hat man die Zugangsdaten der Prüfungsteilnehmer, können sie remote vom System abgemeldet werden. Das erfolgt (allerdings ohne Warnung) mit

:~$ ssh -t <Username des Prüfungsteilnehmers>@<IP-des-Zielrechners> kill -9 -1

Prüfungsrechner remote herunterfahren

Über den Administrationsrechner lassen sich die Prüfungsrechner im Netz herunterfahren. Dazu wird am entfernten Administrationsrechner in der Konsole

:~$ ssh -t <Adminuser auf Zielrechner>@<IP des Zielrechners> sudo shutdown -h -t 0

einzugegben. Aufgrund des sudo, das für den Shutdown-Befehl notwendig ist, muss man dann noch das Passwort des Admins auf dem Zielrechner eingeben. Für alle, die noch nicht so firm mit shutdown sind:

  • -h steht für halt, -r für reboot
  • -t 0 steht für sofort bei Desktop-Betriebssystem und wartet eine Minute bei Servernetriebssystemen. Die Zahl gibt die Minuten bis zum Ausführen des shutdown an.

Konfiguration der Clients

Ist der erste Clients mit einem Testuser konfiguriert, kann das Image auf alle Client-PCs z.B. mit -> CloneZilla kopiert werden. Abhängig von der Zahl der zu konfigurierenden PCs stösst man sehr schnell auf das Problem des Aufwands, jeden PC nun individuell nachkonfigurieren zu müssen. Darunter sind:

  • IP-Adresse des Clients und Username registrieren
  • User-Account des Prüfungsteilnehmers auf dem Client anlegen
  • Mountpunkt(e) für Fragen und Antworten
  • -> Sperren bestimmter Tastenkombinationen (z.B. CTRL + F1)

Auch hier hilft SSH weiter, indem man sich entsprechende Scripte dazu erstellt. Dazu später mehr…

Weiterführende Beiträge dazu sind:
-> Ubuntu 16.04 mit Openbox als Kiosksystem
-> Tasten sperren oder Belegung verändern
-> Batch-Konvertierung HTML nach PDF
-> Dateien mit Batch-Script umbenennen
-> Tipps zur Openbox als Prüfungsrechner (I)

Buy Me a Coffee at ko-fi.com

3 Comments

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.

Nobody is perfect
Einen Fehler gefunden?
Verbesserungsvorschläge, Lob oder Kritik?

Schreiben Sie mir mit dem -> Kontaktformular
oder per -> E-Mail.
DANKE!