ubuntuusers.de

c't script Zwangsabmeldung, Hilfe benötigt

Status: Ungelöst | Ubuntu-Version: Ubuntu 11.10 (Oneiric Ocelot)
Antworten |

PCHSwS

Anmeldungsdatum:
17. Juni 2011

Beiträge: 270

Wohnort: /home/pchsws

pierre2000 schrieb:

so, Rechte geändert, das ganze unter dem User gestartet, dannach blinkender Cursor im Terminal. Das Logout script habe ich auf 10min geändert. Langer Rede kurzer Sinn, dreimal (je nach Ablauf der voreingestellten Zeiten) folgende Meldung:

1
Service 'org.gnome.SessionManage[mark]r/[/mark]org/gnome/SessionManager' is not a valid name.

Muss ja auch heißen

1
Service 'org.gnome.SessionManager[mark] [/mark]/org/gnome/SessionManager' is not a valid name.

(Ist in der c't schlecht geschrieben.)

Damit sollte zumindest diese Variante laufen.

MFG, PCHSwS

PCHSwS

Anmeldungsdatum:
17. Juni 2011

Beiträge: 270

Wohnort: /home/pchsws

Wenn dir aber dieses Script nicht ausreicht, können wir auch das andere verwenden - da würde ich dann aber empfehlen, alle Veränderungen erst einmal händisch rückgängig zu machen, dann genau überlegen was zu tun ist, und alles nochmal anlegen / einstellen. Sonst frickeln wir wieder 10 Mal bis es klappt 😉

MFG, PCHSwS

pierre2000

(Themenstarter)

Anmeldungsdatum:
18. September 2006

Beiträge: 114

Ich hab eh alles gelöscht. Im Augenblick ist gar nix mehr drauf. Aber wei schon geschrieben wäre das ausführliche Script zu bevorzugen (mehr Feineinstellungen)

Gruss, pierre

PCHSwS

Anmeldungsdatum:
17. Juni 2011

Beiträge: 270

Wohnort: /home/pchsws

Okay, nur falls hier wer mitliest - da oben ist was schief gelaufen, nochmal im Klartext:

PCHSwS schrieb:

pierre2000 schrieb:

so, Rechte geändert, das ganze unter dem User gestartet, dannach blinkender Cursor im Terminal. Das Logout script habe ich auf 10min geändert. Langer Rede kurzer Sinn, dreimal (je nach Ablauf der voreingestellten Zeiten) folgende Meldung:

 Service 'org.gnome.SessionManager/org/gnome/SessionManager' is not a valid name.
 

Muss ja auch heißen

 Service 'org.gnome.SessionManager /org/gnome/SessionManager' is not a valid name.
 

(Ist in der c't schlecht geschrieben.) Damit sollte zumindest diese Variante laufen.


Dann speichere bitte jetzt mal das autologout.py in /usr/local/bin/ und mach einen Eintrag in der /etc/rc.local vor dem exit 0:

[...]
/usr/local/bin/autologout.py

exit 0

(bearbeite die Dateien bitte im Terminal mit nano, z.B. sudo nano /etc/rc.local - das ist am zuverlässigsten. Speichern mit Strg + + O dann und mit Strg + + X beenden)

Geht es dann?

MfG, PCHSwS

pierre2000

(Themenstarter)

Anmeldungsdatum:
18. September 2006

Beiträge: 114

Konfiguration /usr/bin/local/autologout.py:

1
2
3
4
5
6
7
8
9
# CONFIGURATION
# user limits, indexed by UID; adapt to your own needs. User objects are created.
# foo: two and a half hours between 14:00 and 20:00
users[get_uid('michele')] = User(name='michele', start='18:00', end='22:00', limit='3:30')
users[get_uid('pierr')] = User(name='pierr')  # no limits
users[115] = User(uid=115, limit='0:01')  # guest session, 1 minute only
users[116] = User(uid=116, limit='0:01')  # guest session
users[117] = User(uid=117, limit='0:01')  # guest session
users[118] = User(uid=118, limit='0:01')  # guest session

und etc/rc.local: einmal so:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
#!/bin/sh -e
#
# rc.local
.
.
.
# By default this script does nothing.
/usr/local/bin/autologout.py

exit 0

und so:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
#!/bin/sh -e
#
# rc.local
.
.

#
# By default this script does nothing.
/usr/local/bin/autologout.py
exit 0

In beiden Fällen kann der User sich anmelden, obwohl dies erst nach 18:00 möglich sein sollte. Beide Versionen wurden mit nano erstellt so wie du das geschrieben hattest.

pierre2000

(Themenstarter)

Anmeldungsdatum:
18. September 2006

Beiträge: 114

Dann hab ich das hier probiert:

1
2
3
michele@pierre-HP-625:~$ python /usr/local/bin/autologout.py
root privileges needed, sorry!
michele@pierre-HP-625:~$ 

PCHSwS

Anmeldungsdatum:
17. Juni 2011

Beiträge: 270

Wohnort: /home/pchsws

pierre2000 schrieb:

1
2
3
michele@pierre-HP-625:~$ python /usr/local/bin/autologout.py
root privileges needed, sorry!
michele@pierre-HP-625:~$ 

Bringt nix, da das Skript Systemweit ausgeführt wird 😉

In die etc/rc.local muss aber auch ein python davor! Also

#!/bin/sh -e
#
# rc.local
.
.
.
#
# By default this script does nothing.
python /usr/local/bin/autologout.py
exit 0

MfG, PCHSwS

pierre2000

(Themenstarter)

Anmeldungsdatum:
18. September 2006

Beiträge: 114

gemacht:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
#!/bin/sh -e
#
# rc.local
#
.
.
# By default this script does nothing.
python /usr/local/bin/autologout.py

exit 0

user kann trotz "später" Uhrzeit (config: 18:00-22:00) einloggen

PCHSwS

Anmeldungsdatum:
17. Juni 2011

Beiträge: 270

Wohnort: /home/pchsws

Gut, dann debugging 😉

Wechsle mal mit Strg + Alt + F1 in eine tty, log dich mit einem Benutzer mit sudo-Rechten ein und starte das Script dort manuell(python /usr/local/bin/autologout.py). Dann mit Strg + Alt + F7 zurück in die GUI, und schaun ob sich der Benutzer trotzdem anmelden darf, oder rausfliegt nach Limit. (Oder ob der Start des Scrpits eine Fehlermeldung bringt...)

MfG, PCHSwS

pierre2000

(Themenstarter)

Anmeldungsdatum:
18. September 2006

Beiträge: 114

Konnte mich nicht unter ctrl+alt+F1 anmelden (nur blinkender Cursor), habe dann ctrl+alt+F2 gewählt und mich dort als SU angemeldet. das Script gestartet, keine Fehlermeldung (blinkender Cursor), dann wieder auf die GUI gewechselt, den Benutzer gewechselt und den betroffenen User angemeldet. Ging leider.

Dann wieder auf tty2 gewechselt und ne ziemlich lange Fehlermeldung im Terminal (ich schreib das gerade mal ab, weiss nicht wie das kopieren soll):

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
ERROR:dbus.connection:Exception in handler for D_Bus signal:
Traceback (most recent call last):
File "/usr/lib/python2.7/dist-package/dbus/connection.py", line 214, in maybe_handle_message
self.handler(*args, **kwargs)
File "/usr/local/bin/autologout.py", line 227, in session_added
users[uid].activate()
File "/usr/local/bin/autologout.py", line 162, in activate
terminate(self.uid)
File "/usr/local/bin/autologout.py", line 92, in terminate
session_bus=dbus.bus.BusConnection(adress)
File "/usr/lib/python2.7/dist-package/dbus/connection.py", line 125, in _new_
bus=cls._new_for_bus(adress_or_type, mainloop=mainloop)
DbusException: org.freedesktop.DBusError:NoReply: Did not receive a reply. Possible cause include: 
the remote application did not send a reply, the message bus security policy blocked the reply, 
the reply timeout expired, or the network connection was broken

Puh,

PCHSwS

Anmeldungsdatum:
17. Juni 2011

Beiträge: 270

Wohnort: /home/pchsws

Deswegen geht das nicht. Blöder dbus. Macht nur Probleme.

Mal kurz als Zwischeninput: Damit du nicht immer in der tty alles abschreiben musst, kannst du die Ausgabe in eine Datei umleiten. Dazu schreibst du <befehl> > /home/<benutzermitsudorechten>/Dokumente/neueDatei.txt 2>&1 - <befehl> ist hier python /usr/local/bin/autologout.py und den Benutzerordner suchste dir im Dateimanager raus.

Also z.B. so:

python /usr/local/bin/autologout.py > /home/pierr/Dokumente/neueDatei.txt 2>&1

Ich muss mir jetzt erstmal das Script anschauen. Kannst mir mal den Downloadlink geben? Hab die c't verlegt -.-

MfG, PCHSwS

pierre2000

(Themenstarter)

Anmeldungsdatum:
18. September 2006

Beiträge: 114

http://www.heise.de/ct/Software-Archiv-5462.html

1204-164.zip 5.261 27.01.12 Zwangsabmeldung, Session Management unter Linux, c't 04/2012, S. 164

Gruss,

PCHSwS

Anmeldungsdatum:
17. Juni 2011

Beiträge: 270

Wohnort: /home/pchsws

ICh bin mir nicht ganz sicher, aber wenn ich den c't-Artikel und den Output richtig verstehe, fehlt es an der Berechtigung, die in der c't auf Seite 169, Mittlere spalte oben (ja, ich hab sie endlich wieder gefunden ☺ ) beschrieben ist.

Um die zu setzen machst du folgendes im Terminal des sudo-Benutzers:

sudo nano /etc/dbus-1/session-local.conf

Den Text reinschreiben
Speichern mit Strg + + O dann und mit Strg + + X beenden Neustarten & schaun obs geht.

Allerdings wäre es hier sinnvoll eine Live-Disk zur Hand zu haben - da man da leicht was kaputt macht (Was man zwar nur von einer Live-Disk, von da aber ganz einfach wieder hinbiegen kann).

MfG, PCHSwS

pierre2000

(Themenstarter)

Anmeldungsdatum:
18. September 2006

Beiträge: 114

Hi, ' wie muss ich das reinschreiben in Bezug auf die Zeileneinzüge? Mit TAB einrücken oder mit der Leertatste? Gruss, pierre

PCHSwS

Anmeldungsdatum:
17. Juni 2011

Beiträge: 270

Wohnort: /home/pchsws

Einrücken müssen tust dus gar nicht. Dient nur der Leserlichkeit. Wenn du willst, kannst du Tab verwenden.

MfG, PCHSwS