Neue Versionen für MAusSK und ButtonBar mit python

Hallo zusammen,
für das Classroommanagement MAusSK gibt es eine neue, überarbeitete Version, bei der der Serverdienst nun in python3 implementiert ist und dadurch performanter läuft:
https://wiki.linuxmuster.net/community/anwenderwiki:classroom_management:maussk_v1
Die neue Version 1.x hat mehrere neue Features und muss deshalb sowohl am Server als auch am Linux-Client und Windows-Client komplett neu installiert werden.

Auch das einfache Tool ButtonBar gibts nun für Linux-Clients in python3:
https://wiki.linuxmuster.net/community/anwenderwiki:linuxclient:buttonbar_python

Grüße
Martin

1 „Gefällt mir“

Hallo Martin

die Installation der MAusSK auf einem frisch geupdateten System 7.2 hat folgende Fehlermeldung:

userdel: user ‚teacher‘ does not exist
dpkg: Fehler beim Bearbeiten des Paketes linuxmuster-base7 (–configure):
»installiertes linuxmuster-base7-Skript des Paketes post-installation«-Unterprozess gab den Fehlerwert 6 zurück
Fehler traten auf beim Bearbeiten von:
linuxmuster-base7
E: Sub-process /usr/bin/dpkg returned an error code (1)

Kann jemand einordnen ob das ein Fehler der MAusSK oder der 7.2 ist ?

Grüße Rainer

Hallo Rainer,
das Install-Script der MAusSK führt folgenden Befehl aus:
dpkg -s linuxmuster-base7
Der Befehl überprüft den Status (-s) des Paketes, ob eine lmn7 vorliegt.

Wenn du den Befehl direkt aufrufst, müsste die gleiche Fehlermeldung erscheinen.
Wahrscheinlich ist die Installation von linuxmuster-base7 und dein Update nicht in Ordnung.
LG
Martin

Hallo Martin

du vermutest wohl richtig:

Auf dpkg -s linuxmuster-base7 bekomme ich die Meldung:

Status: install ok half-configured

Damit muss ich wohl einen neuen Thread aufmachen …

Grüße Rainer

Hallo Martin,
auf unserer LMN 7.2 habe ich gerade das Update von 0.95 auf 1.11f versucht. Beim Starten des schukodaemons tritt der folgende Fehler auf:

Traceback (most recent call last):
File "/usr/lib/linuxmuster-maus/schukodaemon.py", line 21, in <module>
import mybase
ImportError: bad magic number in 'mybase': b'3\r\r\n'
systemd[1]: **schukodaemon.service: Main process exited, code=exited, status=1/FAILURE**

Das Problem liegt wohl an inkompatiblen python3-Versionen, womit die vorkompilierten pyc-Dateien nicht interpretiert werden können. Als Python-Version ist auf dem Server 3.10.12 installiert.
Ich könnte mir vorstellen, dass das Problem dann auch bei den Modulen ClientThread, mconst und ServerThread auftreten würde.

Viele Grüße
Dominik

Hallo Dominik,
du hast recht, habe die Module mit python 3.6.9 kompiliert, wohl inkompatibel zu 3.10.12
Habe gedacht, dass alle python 3-Versionen zueinander kompatibel sind und es nur zwischen python 2 und 3 Probleme gibt.
LG
Martin

Tag auch,
stehen gerade vor der Wahl zwischen MAusSK und Epoptes

  1. Worin unterscheidet sich MAusSK von Epoptes?
  2. Kann ich bei MAuSk die Features auf An- bzw. Abschalten der Grafik begrenzen? Rest steht datenschutzrechtlich gerade noch zur Debatte.

Benutzt jemand MAusSK im harten Schuleinsatz?

Gruss Harry

Hi Harry,
ja, ich verwende es und es funktioniert sehr gut. Die Kollegen mögen es, weil es so einfach ist. Hier schaltet niemand mehr das Internet über die Schulkonsole frei. Nachteil: Die KuK wissen nicht mehr, was die Schuko ist und wenn sie mal ein PW ändern müssen…
Vorteil: Du kannst das Netz für den ganzen Raum freigeben und auch, wenn einer später kommt, wird er freigeschaltet (oder eben gesperrt). VA. die Tastatur- und Monitorsperre ist schön :slight_smile:
LG
Max

3 „Gefällt mir“

Hallo Martin,
ich bin gerade dabei, die maus_sk 0.95 durch die maus_sk 1.2 zu ersetzen. War jetzt zwingend nötig, weil 0.95 unter Ubuntu 24.04 zickig ist.
Dabei fange ich ganz neu an, d.h. ich habe alle Spuren der alten Maus vom Server und von den Clients entfernt. Das ist mal nötig, weil ich da über die letzten Jahre unendlich viel gebastelt habe.

Ich sammle hier mal die Stolpersteine:

  1. Der Link im Wiki zeigt noch auf 1.11f nicht auf 1.2

  2. Nach Installation von 1.2 startet der Schukodaemon trotzdem nicht, weil die unkompilierten *.py Dateien nicht auf den Server kopiert werden, sondern nach wie vor die *.pyc-Dateien. Die dürfen gar nicht kopiert werden. Nachdem ich die *.py-Dateien von Hand an die richtige Stelle geschoben habe und die *.pyc-Dateien gelöscht startet der schukodaemon

Weiter bin ich noch nicht gekommen…

Hallo Martin @martin.res ,

habe jetzt die Maus SK 1.2 ausgerollt und verteilt. Viel konnte ich noch nicht testen aber auf den ersten Blick geht schon mal das Wesentliche. Der neue schukodaemon macht die Sache deutlich performanter! Vielen Dank dafür!

Einen recht gravierenden Showstopper habe ich allerdings schon festgestellt. Wenn man einen Client zeigen oder steuern will öffnet sich Reminna aber das Passwort wird nicht automatisch eingefügt. In der Datei $HOME/.maussk.remmina steht das Passwort auch nicht drin. Gebe ich das VNC Passwort per Hand ein funktioniert alles. Ich habe schon herausgefunden, dass diese Datei beim betätigen des „zeigen“-Schalters erzeugt wird, mehr kann ich aber leider nicht debuggen, weil die maus_sk ja nur in kompillierter Form vorliegt…hast du eine Idee, warum das nicht funktioniert. Das VNC-Passwort wurde per global-admin über die Maus an den Server übertragen.

Wäre für einen Tipp dankbar!

VG
Dominik

Hallo Dominik,
danke für die Rückmeldung, arbeite dran.
Der VNC Viewer reminna macht immer Probleme, da er sich leider auch nicht per config-Datei oder Optionen steuern lässt.
Im Wiki ist nun Version 1.2a abgelegt und verlinked.
LG
Martin

Hallo Martin @martin.res ,
habe das Remmina - Passwort - Problem gelöst.
Für Ubuntu 24.04 muss im script startremmina.sh bei xdotool search noch die Option --desktop 0 eingefügt werden…hier das funktionierende Script:

#!/bin/bash
#
# Usage: startremmina.sh <password>

/usr/bin/remmina -c $HOME/.maussk.remmina &
sleep 1
winid=$(xdotool search --desktop 0 --name 'Verbindung zu')
if [ -z "$winid" ]; then
  sleep 1
  winid=$(xdotool search --desktop 0 --name 'Client-')
fi
if [ -z "$winid" ]; then
  sleep 1
  winid=$(xdotool search --desktop 0 --name 'Client-')
fi
/usr/bin/xdotool windowactivate --sync $winid type $1
/usr/bin/xdotool windowactivate --sync $winid key Return

exit 0

Ebenfalls unter Ubuntu 24.04 funktioniert das Script internetdaemon.sh nicht mehr was daran liegt, dass man ldbsearch nur als $USER ausführen darf und es muss auch eine Option verändert werden…hier das funktionierende Script:

#!/bin/bash
#
# /usr/sbin/internetdaemon.sh
#

template_user=linuxadmin
servername=server
ad_domain=linuxmuster.windeck-gymnasium.de

user=$(who | awk '$2 ~ /:1/ {print $1}')
krbfile=$(find /tmp -user "$user" -name "krb5cc*" -type f)
i_member=$(sudo -u $user ldbsearch --use-kerberos=required --use-krb5-ccache=$krbfile -H ldap://$servername.$ad_domain "(&(samaccountname=$user))" | grep -E "memberOf.*CN=internet")

if [[ -z "$i_member" ]]  && [[ -n "$user" ]] && [[ $user != $template_user ]]
then
iptables -A OUTPUT -p tcp --dport 3128 -j REJECT
#echo $(date)" ... Internet aus für "$user >> /var/log/i_on_off.log
else
iptables -D OUTPUT -p tcp --dport 3128 -j REJECT
#echo $(date)" ... Internet an für "$user >> /var/log/i_on_off.log
fi 

exit 0

Ansonsten funktioniert jetzt erst mal alles…genauere Tests folgen in den nächsten Tagen/Wochen. Die neue Maus läuft wesentlich performanter! …wirklich super!
DANKE Martin!

LG
Dominik

1 „Gefällt mir“

Hallo Dominik,
wenn man die Option --desktop weglässt, dann sucht er auf allen Desktops, das Script funktioniert bei mir deshalb auch ohne die Option. Mit der Option sucht er nur auf Desktop 0, das funktioniert aber bei meiner Umgebung nicht?
Klar, die ad_domain muss man anpassen, wenn man nicht default verwendet.
Hast du absichtlich von ldaps auf ldap gewechselt?
LG
Martin

Hallo Martin,
du hast das glaube ich 2 x falsch verstanden.
Bei Ubuntu 22.04 klappt es nur ohne desktop 0. Bei Ubuntu 24.04 ist das desktop 0 zwingend nötig weil es sonst dort nicht mehr funktioniert.
Um die ad_domain geht es gar nicht. Schau die den ldbsearch - Befehl genau an, da sind einige Änderungen gegenüber deiner Befehlszeile. Und ja ldaps musste ich gegen ldap tauschen, weil es sonst nicht mehr funktioniert.

Ich hatte heute die neue Maus SK mal im Unterrichtseinsatz und da sind mir zwei Dinge auf die Füße gefallen:

  1. Die Bildschirmsperre benötigt jetzt qiv, was aber bei der Installation der Maus nicht mitkommt…war jetzt nicht so dramatisch, dann hatten die SuS halt nicht das Sperrbild.
  2. Problematisch ist, das die Bildschirmsperre gegenüber der Maus 0.95 extrem unzuverlässig ist…immer etwa die Hälfte der PC wird nicht gesperrt…ich schau mir das die Tage nochmal an, ob ich da im sperren.sh-Skript irgendwas optimieren kann.
    LG
    Dominik

Hallo Dominik,
beim Install-Script am Client wird qiv installiert - hattest du evtl. dabei keinen Internetzugriff des Clients?
Ich verwende qiv, da das Programm schnell startet um den Sperrbildschirm anzuzeigen.
Deinen neuen ldbsearch-Befehl habe ich gesehen und auch schon eingebaut - merci. Von Version 4.7 auf 4.15 wurden die Optionsnamen geändert - das habe ich nicht mitbekommen.
Bisher habe ich nur mit 22.04 getestet.
Wenn der Client nicht gesperrt wird - kommt überhaupt der Befehl dazu per Netzwerk am Client an?
LG
Martin

Hallo Martin,

jo das ist möglich…

Ja der Befehl kommt an. Es hat eine ganz andere Ursache…ich habe heute 45 Minuten mit meinen Infoschülern daran rumgetestet…es ist einfach so, dass die SuS eine Möglichkeit gefunden haben die Bildschirmsperre zu verhindern…
Die SuS drücken die Windows-Taste, damit kommen sie zur Workspace-Übersicht und dort lassen sie den Rechner stehen. Kommt jetzt der Sperrbefehl, dann kommt zwar das Sperrbild aber die Sperre an sich funktioniert nicht. Ich habe jetzt aus Ermangelung von Zeit einfach einen kleinen Hack in dein sperren.sh eingebaut, bei dem vor dem Sperren mit xdotool zwei Mal die ESC-Taste gedrückt wird. Das führt dazu, dass die Workspce-Übersicht sicher geschlossen wird und die Sperre funktioniert. Vielleicht kann man das schöner lösen aber es funktioniert jetzt rock solid…hier das modifizierte Skript:

#! /bin/bash
#
# sperren.sh
#
# Version 0.7
# 19.4.2023
########################################################
gnomeuser=$(w | grep "session=ubuntu" | awk '{print $1}')
usercount=$(who | wc -l)
ausgabe=$(screen -ls)

if [[ "$ausgabe" =~ "mausdaemon_slock" ]]; then
  echo "Abbruch: Lock - Befehl ist schon aktiv!"
  exit 1
else
  screen -d -m -S mausdaemon_slock
    #sleep 1

  if [ -e "/etc/linuxmuster-maus/X11_last_user_display" ]; then
    dp=$(cat /etc/linuxmuster-maus/X11_last_user_display)
    if [[ $dp =~ ^:[0-3]$ ]]; then
      screen -S mausdaemon_slock -X stuff $"export DISPLAY=$dp\n"
    else
      screen -S mausdaemon_slock -X stuff $'export DISPLAY=:0\n'
    fi
  else
    screen -S mausdaemon_slock -X stuff $'export DISPLAY=:0\n'
  fi

if [ $usercount != 0 ]; then
  DISPLAY=$dp sudo -u $gnomeuser xdotool key Escape
  DISPLAY=$dp sudo -u $gnomeuser xdotool key Escape
fi

  screen -S mausdaemon_slock -X stuff $'/usr/bin/qiv -Gif /etc/linuxmuster-maus/closed.jpg &\n'
  if [ "$1" = "-u" ]; then
    sleep 1
    screen -S mausdaemon_slock -X stuff $'/usr/bin/X11/xclock -geometry 200x200+20+20 -update 1 &\n'
  fi
  screen -S mausdaemon_slock -X stuff $'/usr/bin/xtrlock \n'
fi
exit 0

LG
Dominik

Hallo Dominik,
super - workaround funktioniert.
Fragen:

  1. Warum zählst du die Anmeldungen (Variable usercount)? Wenn niemand angemeldet ist, dann läuft es halt ins Leere.
  2. Warum sendest du 2 x ESC, bei mir genügt auch einmal.

Problem: Das Senden von ESC schließt beim Client ggf. ein gerade offenens Fenster. Als Lösung sende ich ctrl+Escape - das wird von vielen (nicht allen) Fenstern dann ignoriert.
Geändertes Script, bei dem auch der xdotool Befehl in der screen-session ist. Funktioniert das auch bei dir?

#! /bin/bash
#
# sperren.sh
#
# Version 0.8
# 22.6.2024
########################################################

ausgabe=$(screen -ls)

if [[ "$ausgabe" =~ "mausdaemon_slock" ]]; then
  echo "Abbruch: Lock - Befehl ist schon aktiv!"
  exit 1
else
  screen -d -m -S mausdaemon_slock
  #  sleep 1

  if [ -e "/etc/linuxmuster-maus/X11_last_user_display" ]; then
    DP=$(cat /etc/linuxmuster-maus/X11_last_user_display)
    if [[ $DP =~ ^:[0-3]$ ]]; then
      screen -S mausdaemon_slock -X stuff $"export DISPLAY=$DP\n"
    else
      screen -S mausdaemon_slock -X stuff $"export DISPLAY=:0\n"
    fi
  else
    screen -S mausdaemon_slock -X stuff $"export DISPLAY=:0\n"
  fi

  BENUTZER=$(who -u | awk -v dp="$DP" '$2==dp { print $1 }' | head -1)
    if [ -z "$BENUTZER" ]; then
      BENUTZER=$(who -u | awk '{print $1}' | head -1)
    fi

  screen -S mausdaemon_slock -X stuff $"sudo -u $BENUTZER xdotool key ctrl+Escape\n"
# ggf. Zeile aktivieren, um ESC zweimal zu senden
#  screen -S mausdaemon_slock -X stuff $"sudo -u $BENUTZER xdotool key ctrl+Escape\n"

  screen -S mausdaemon_slock -X stuff $"/usr/bin/qiv -Gif /etc/linuxmuster-maus/closed.jpg &\n"
  if [ "$1" = "-u" ]; then
    sleep 1
    screen -S mausdaemon_slock -X stuff $"/usr/bin/X11/xclock -geometry 200x200+20+20 -update 1 &\n"
  fi
  screen -S mausdaemon_slock -X stuff $"/usr/bin/xtrlock \n"
fi

exit 0

Hallo Dominik,
Script im Forum hatte noch einen Fehler, jetzt editiert.
Grüße
Martin

Hallo Martin,

ich kann es dir nicht mehr sagen…ich habe erst zig andere Wege versucht das Problem zu lösen…ist irgendein Überbleibsel :man_facepalming:.

Nein ein Mal genügt nicht. Es kann der Fall auftreten, dass ein User die Workspace-Übersicht öffnet und dann ein Programm suchen will. Dazu fängt er dann einfach in der Übersicht an zu Tippen. In diesem Stadium führt ein Mal ESC nur wieer zur Workspace-Übersicht und nicht zurück zum Desktop…für diesen Fall braucht man 2xESC.

Das Problem hatte ich noch nicht, aber gut, dass du das weiter gedacht hast. Ich teste das neue Skript am Montag und melde mich.

Danke dir!

LG
Dominik

Hallo Martin,
dein Skript funktioniert hier nicht, was daran liegt, dass die xdotool Befehle nicht aus der Screensession heraus gestartet werden dürfen. Nach dem ersten xdotool-Befehl stürzt die Screensession ab.

Ich habe das Skript jetzt angepasst und so funktioniert es. Die Variablen habe ich nur der Übersichtlichkeit wegen nach oben gepackt:

#! /bin/bash
#
# sperren.sh
#
# Version 0.8
# 22.6.2024
########################################################

DP=$(cat /etc/linuxmuster-maus/X11_last_user_display)
AUSGABE=$(screen -ls)
BENUTZER=$(who -u | awk -v dp="$DP" '$2==dp { print $1 }' | head -1)
    if [ -z "$BENUTZER" ]; then
      BENUTZER=$(who -u | awk '{print $1}' | head -1)
    fi

if [[ "$AUSGABE" =~ "mausdaemon_slock" ]]; then
  echo "Abbruch: Lock - Befehl ist schon aktiv!"
  exit 1
else
  screen -d -m -S mausdaemon_slock
  #  sleep 1

  if [ -e "/etc/linuxmuster-maus/X11_last_user_display" ]; then
    if [[ $DP =~ ^:[0-3]$ ]]; then
      screen -S mausdaemon_slock -X stuff $"export DISPLAY=$DP\n"
      export DISPLAY=$DP
    else
      screen -S mausdaemon_slock -X stuff $"export DISPLAY=:0\n"
      export DISPLAY=:0
    fi
  else
    screen -S mausdaemon_slock -X stuff $"export DISPLAY=:0\n"
    export DISPLAY=:0
    fi

  sudo -u $BENUTZER xdotool key ctrl+Escape
  sudo -u $BENUTZER xdotool key ctrl+Escape

  screen -S mausdaemon_slock -X stuff $"/usr/bin/qiv -Gif /etc/linuxmuster-maus/closed.jpg &\n"
  if [ "$1" = "-u" ]; then
    sleep 1
    screen -S mausdaemon_slock -X stuff $"/usr/bin/X11/xclock -geometry 200x200+20+20 -update 1 &\n"
  fi
  screen -S mausdaemon_slock -X stuff $"/usr/bin/xtrlock \n"
fi

exit 0

LG

Dominik