ubuntuusers.de

timekpr- und nanny-Ersatz für Xubuntu

Status: Ungelöst | Ubuntu-Version: Ubuntu 12.04 (Precise Pangolin)
Antworten |

JueWe

Anmeldungsdatum:
16. März 2013

Beiträge: 3

Hallo, ich habe vor ein paar Wochen auch feststellen müssen, dass die Programme timekpr und nanny unter 12.4 nicht mehr funktionieren. Die Kinder haben mir natürlich nicht verraten, dass die Zeitkontrolle nicht mehr funktioniert. Allerdings wurde sogar der Wunsch geäußert, dass wieder ein Programm installiert wird, das dabei hilft, vom Rechner weg zu kommen.

Ich habe daraufhin folgende Skripte gebaut, die bei mir unter Xubuntu 12.04 funktionieren. Ich bin sicher, dass das auch eleganter ginge, aber ich habe so etwas noch nie gemacht. Mein Dank auch an alle Teilnehmer der zahlreichen Foren, bei denen ich Anregungen und Vorlagen gefunden habe.

Die Skripte sorgen zum einen für die Abmeldung nach Ablauf der Sitzung, wobei man Restzeiten am gleichen Tag in weitern Sitzungen nutzen kann. Zuvor werden entsprechende Warnungen eingeblendet. Im Panel kann man einen Starter einbauen, der das Abfrage-Skript aufruft. Dann wird über den Benachrichtigungsdienst über die Zahl der Sitzungen und die verbleibende Zeit informiert.

Unter anderen Desktop-Umgebungen muss sicher die Anbindung an die System-Aufrufe angepasst werden. Das gilt auch für den automatischen Aufruf des Skriptes used_time beim Abmelden, Info (xfce4) dazu im Skript.

Moderiert von Lasall:

Eigenen Projektthread reserviert (und von timekpr installation fehlgeschlagen abgetrennt).

zeitkontrolle.sh (4.2 KiB)
Download zeitkontrolle.sh
used_time.sh (2.2 KiB)
Download used_time.sh
zk_abfrage.sh (1.3 KiB)
Download zk_abfrage.sh

JueWe

(Themenstarter)

Anmeldungsdatum:
16. März 2013

Beiträge: 3

Hallo zusammen,

ich war ja überrascht, dass mein Eigenbau in den Ordner Projekte verschoben worden ist und offenbar zumindest eine Anregung betrachtet wird. Ich kann nicht einschätzen, ob der Ansatz irgendwelchen Qualitätsanforderungen entspricht. Aber er funktioniert bei mir einigermaßen. Ich habe überlegt, wie man die weiteren Funktionen von Timekpr http://wiki.ubuntuusers.de/Timekpr in das Skript einbauen kann. Timekpr konnte für jeden Tag unterschiedliche Zeitdauern und eine absolute Uhrzeit setzen, bei der in jedem Fall ausgeloggt wird. Außerdem konnten der SU für einen Tag eine Extra-Zeit gewähren.

Nanny https://projects.gnome.org/nanny/ hatte ich zwar auch einmal für die Kinder installiert, aber die zusätzlichen Funktionen (separate Zeitbegrenzungen für Internet, E-mail etc.) halte ich nicht für nötig. Wichtiger ist m. E. hier der Inhaltsfilter, der mit dansguardian/squid3 gut funktioniert.

Im Folgenden also ein überarbeitetes Skript, das die Zeitlimits aus eine separaten Konfigurationsdatei einliest. Außerdem prüft das Skript nun, ob die absolute Uhrzeit am Abend oder die gesetzte Zeitdauer limitierend wirkt und arbeitet mit dem limitierenden Wert weiter. Ebenso wird geprüft, ob eine Datei besteht, die eine gewährte Zusatzzeit enthält.

Ich denke, dass das Skript mit wenigen Änderungen auch an andere Ubuntu-Desktops angepasst werden könnte. Die Experten unter Euch kennen sicher auch Tools, mit denen die Konfig-Datei über eine GUI/Maske mit den Zeiten befüllt werden kann.

Eine Anfangszeit, vor der nicht eingeloggt werden kann, habe ich im Skript nicht verwirklicht. Zum Einen, weil ich da mit unseren Langschläfern kein Problem habe, zum Anderen, weil das vielleicht besser über crontab geregelt wird. Mglw. kann man das Schreiben einer entsprechenden Crontab auch über die Eingabemaske für die Konfig-Datei regeln.

Ich bin mir sicher, dass man das auch alles eleganter programmieren könnte. Für Hinweise zur Verbesserung wäre ich dankbar. Mit der Erstellung einer GUI kenne ich mich nicht aus, dürfte aber alles machbar sein.

So, jetzt bin ich gespannt. Gruß

zeitkontrolle.sh (7.9 KiB)
Download zeitkontrolle.sh
zk_limits.conf (317 Bytes)
Download zk_limits.conf
used_time.sh (2.3 KiB)
Download used_time.sh
zk_abfrage.sh (1.4 KiB)
Download zk_abfrage.sh

dell1320

Anmeldungsdatum:
19. März 2011

Beiträge: 46

Sorry, aber das mit dem Script ist für mich als OttoNormaluser zu komplex. Gibt es denn keine simple Lösung für eine Zeitbegrenzung? Weder Nanny noch timekpr (auch nicht mit französischer Anleitung) bekomme ich zum laufen.

Abhilfe dringend erbeten.

eremit

Avatar von eremit

Anmeldungsdatum:
12. Mai 2006

Beiträge: 418

Wohnort: Braunschweig

Hallo JueWe, danke für Deine Klasse-Vorarbeit. Du bist nicht alleine! Ich aktualisiere die Tage von 10.04 auf 13.04 und brauche daher einen timekpr Ersatz. Da ich Gnome bevorzuge, werde ich versuchen, Dein Skript entsprechend zu erweitern. Ich werde mich auf dieser Welle wieder melden.

Viele Grüße

Eremit

PS: den Desktop fragt man ab mit

echo $DESKTOP_SESSION

eremit

Avatar von eremit

Anmeldungsdatum:
12. Mai 2006

Beiträge: 418

Wohnort: Braunschweig

Hallo,

ich habe JueWes Abfrage nach dem Desktop-Umgebung so erweitert, dass sie nun auch mit der Gnome-Shell und mit KDE funktioniert. Den Code-Schnipsel habe ich in die Ablage hochgeladen.

Das Argument --force ist beim Schließen der Gnome-Shell wichtig, da sonst der Nutzer (=das Kind) gefragt wird, ob die Sitzung wirklich beendet werden soll, eine Frage, die natürlich immer mit "Nein" beantwortet werden würde 😉

Eremit

sliding.paul

Anmeldungsdatum:
28. August 2013

Beiträge: 1

Als Vater, der seinen Kindern einen PC zur Verfügung stellen will ist die Arbeit von JueWe besonders wichtig. Ein ganz herzliches Dankeschön!! Aber, da nicht alle das Detailwissen von Ubuntu haben, habe ich versucht die Vorgehensweise bei der Einrichtung besser zu beschreiben. Hier mein zusammengefasstes Wissen:

Zeitbeschränkung auf Ubuntu 12.04 einrichten

Voraussetzungen

  • Die Portierung nach Ubuntu (das "JueWe-Skript" ist für Xubuntu geschrieben): Ubuntu ⇒ Gnome, Kubuntu ⇒ KDE, Xubuntu ⇒ Xfce habe ich folgende Quelle genutzt: http://www.techlw.com/2012/07/log-out-in-ubuntu-from-command-line.html. Das bedeutet, dass in der Skriptdatei zeitkontrolle.sh die Zeile: "xfce4-session-logout --logout" in: gnome-session-quit --logout --no-prompt geändert werden muss. Die KDE-Version aus der genannten Quelle habe ich nicht getestet.

Vorgehen, um die Zeitbeschränkung einzurichten:

  • kopiere mit root-Rechten die 4 Dateien in den neu zu erstellenden Ordner /usr/local/zk

  • verändere die Rechte der sh Dateien, so dass es ausführbare Dateien werden: chmod +x zeitkontrolle.sh, chmod +x used_time.sh

  • erzeuge mit root-Rechten die Ordner "tmp" und "hist" und ändere deren Rechte, dass alle user darauf zugreifen können: sudo chmod -R a+w <Ordnername>

  • modifiziere zk_limits.conf mit den entsprechenden Namen (hier die Usernamen eingeben, die auf dem System vorhanden sind) und den Zeiten. Die Datei zk_abfrage wird nicht genutzt

  • erstelle den Aufruf für zeitkontrolle.sh in /etc/xdg/autostart

  • erstelle eine Datei in /etc/xdg/autostart (z.B.:zeitkontrolle_start.desktop) mit dem folgenden Inhalt:

[Desktop Entry] 

Type=Application 

Name=zeitkontrolle.sh 

Exec=/usr/local/zk/zeitkontrolle.sh
  • modifiziere zum Abmelden die Datei /etc/lightdm/lightdm.conf unter [SeatDefaults] mit dem Eintrag:

session-cleanup-script=/usr/local/zk/used_time.sh

Einrichten von pam_time.so unter Ubuntu 12.04

(sollte auch für die folgenden funktionieren, die lightdm als Displaymanger benutzen):

Vorteil der pam_time.so Lösung ist, dass sich im Gegensatz zum JueWe-Skript das Einloggen verhindern lässt. Beim JueWe Skript kann sich der user immer wieder einloggen und bekommt drei Minuten. Mit der Beschränkung über pam_time.so ist das Einloggen selbst blockiert. Problem ist, dass die Dateien vom JueWe-Skript (zk_limits.conf) und die Datei, die für pam_time.so die Zeitbeschränkung definiert "time.conf" (in /etc/security) manuell auf dem gleichen Stand gehalten werden müssen. Was pam_time.so NICHT kann, ist einem Nutzer ein gestimmtes Zeitkontingent zuordnen. Das ist aber über das Skript von JueWe sichergestellt.

Vorgehen

  • in: /etc/pam.d/lightdm hinter @include common-account folgende Zeile einfügen: account requisite pam_time.so

  • editiere /etc/pam.d/login und enferne # vor der Zeile: account requisite pam_time.so

  • füge eine Zeile in Datei /etc/security/time.conf ein, die die Regel vorgibt, welcher User sich ab wann nicht mehr einloggen darf. Hier kann der Hauptnutzer des Rechners mit der folgenden Regel ausgenommen werden: *;*;user1;Al0000-2400; der Benutzer, der beschränkt werden soll: *;*;user2;Al1200-2100

mo2mo

Anmeldungsdatum:
4. November 2015

Beiträge: 21

Hallo @JueWe, hallo an alle!

Ich bin auf Dein Skript gestossen, weil mir die GUI-Lösungen wie timekpr oder ComplexShutdown nicht komplett gefallen haben. Deshalb habe ich Deine Idee aufgegriffen und daraus mein "kidsControl" gemacht. Mein Konzept ist etwas umfangreicher - dennoch wieder einfacher, weil es nur noch drei Dateien sind. Und die Konfig-Datei kann nun ganz leicht 😉 mit einem Tabellen-Programm z.B. von LibreOffice editiert werden:

  • kidsControl

  • kc_limits.csv

  • Zeit-Kontrolle.desktop (als Starter)

Das angehängte Archiv mit root-Rechten im Ordner /usr/local entpacken. Getestet unter Linux, debian basiert (Ubuntu / Linux Mint). Der Starter "Zeit-Kontrolle.desktop" kann beliebig im System verschoben werden, wenn das Archiv wie angegeben entpackt worden ist. Das Archiv beinhaltet auch die unten angehängten Bilder.

Neuerungen:

  • Anfangszeit wird kontrolliert

  • Wochenlimit als Guthaben

  • Konfig-Datei einfach editierbar

  • Tages-Zusatz-Zeit berechnet aus dem Durchschnitt aller unverbrauchten Wochen-Restguthaben. Die Nutzer können damit ihren Zeitrahmen mitgestalten:

    • longDay = abends länger surfen

    • PC-Day = ein Tag pro Woche mit superlanger PC-Zeit, abhängig vom Wochen-Restguthaben

  • Wochen- und Jahres-Tabellen - alle Nutzer und deren Nutzung pro Woche als Übersicht

  • Hinweis, wenn Benutzer in Konfig-Datei fehlt

  • kein 3-Minuten-Bonus mehr. Wenn "game over", dann "aus die Maus"

Der Skript hat ein Test-Modus mit den Test-Nutzern Momo, Max oder Moritz. Im Terminal:

1
$ kidsControl test momo

dann kann dem Ablauf zu gesehen werden. Logout etc. werden dann nur simuliert. Ohne "momo" wird mit dem angemeldeten Nutzer getestet. Es wird der tmp-Ordner des Systems genutzt. Der hist-Ordner wird als Unterordner im Verzeichnis "/usr/local/kc", in welchem der Skript liegt, beim Entpacken mit angelegt. Im hist-Ordner befinden sich ein paar Beispiele für "Momo" und "Moritz" und deren Jahres-Tabelle. Eingebunden ins System wird der Skript sonst wie @sliding.paul bereits für "Zeit-Kontrolle.sh" skizziert hat, weitere Hinweise im Skript. Zum Auswerten der Nutzer-Zeit ist in der Datei "/etc/../PostSession/Default" ein paar Zeilen vor "exit 0" folgendes einzutragen:

1
2
# PC-Nutzungs-Dauer auswerten
/usr/local/kc/kidsControl out

Über die Konfigurations-Datei können individuell die Wochenlimits (WL), PC-Day (PD) oder abends länger surfen (LD) eingestellt werden:

1
2
3
4
Woche,WL,PD,LD,Mo,Di,Mi,Do,Fr,Sa,So,WT,Fr od. Sa,Sa od. So
<user1>,630,Fr,ja,90,80,70,60,110,120,100,10:00-19:30,11:00-21:00,12:00-22:00
<user2>,630,Fr,ja,90,80,70,60,110,120,100,10:00-19:30,11:00-21:00,12:00-22:00,
<user3>,630,Do,--,100,100,100,100,100,100,100,10:00-19:30,11:00-21:00,12:00-22:00

Das zusätzliche Tages-Limit wird vor jeder neuen PC-Nutzung erneut berechnet.

Noch geplant:

  • Auswertung der Jahres-Tabelle - alles pro Nutzer auf einen Blick

  • Nutzerzeiten mit Ferien-Modus

  • Passwortgeschützter Notschalter oder "Mutti"-Freigabe, falls Zeit verbraucht und "Klassenarbeit" droht. 😢 - wirklich notwendig?

  • Weitere Ideen?

Hinweis: Erst probieren (Test-Modus), dann verwenden und beachten was bereits im Thread steht.

Ein Blick auf die angehängten Bilder zeigt drei Situationen:

  • ohne PC- und longDay

  • longDay, ohne PC-Day

  • longDay und PC-Day

Darauf läßt sich bereits vieles erkennen. Doch wer noch Fragen hat - der frage!

Also viel Spass beim Ausprobieren.

Gruß mo2mo

Update: 07.11.2015, Version 1.10_"kidsControl" dient zur Zeitkontrolle der PC-Nutzung

kidsControl_V1-10.tar.gz (1.3 MiB)
"kidsControl" dient zur Zeitkontrolle der PC-Nutzung
Download kidsControl_V1-10.tar.gz
Bilder

JueWe

(Themenstarter)

Anmeldungsdatum:
16. März 2013

Beiträge: 3

Hallo mo2mo, ich hab mir Dein Skript angeschaut und bin schon von der Form her, aber natürlich auch von der Funktionalität beeindruckt. Zahlt sich eben doch aus, wenn sich jemand der Sache annimmt, der etwas davon versteht. Unsere Kinder sind inzwischen dem Alter entwachsen, so dass wir so etwas nicht mehr einsetzen (müssen). Gruß JueWe

mo2mo

Anmeldungsdatum:
4. November 2015

Beiträge: 21

Hallo JueWe,

danke für die Blumen 😉, doch dank Deiner Vorarbeit, hatte ich es einfacher, auf mögliche Fallstricke zu achten.

Wenn Du es nicht mehr brauchst - sicher werden sich andere freuen, wenn sie fündig werden. Ich werde es noch die Tage einsetzen und schauen wie kreativ die Möglichkeiten genutzt werden, um den Zeitrahmen mit "longDay" und "PC-Day" zu gestalten. Meine Idee dabei war: Keinen stur festen Rahmen zu setzen, sondern dem Kind die Freiheit zu geben, bei entsprechender Nutzung auch abends mal länger surfen zu können oder mal mehr Zeit zu haben, ohne immer fragen zu müssen. Und trotzdem Max-Grenzen zu setzen, damit es nicht ständig ausufert. Von den unnötigen Diskussionen darum mal ganz abgesehen.

Gruß mo2mo

P.S.: Die weitere Entwicklung von kidsControl kann im Howto verfolgt werden.

Antworten |