Wie kann ich Benutzer von Ubuntu automatisch abmelden?

2760
DrorCohen

Da meine Ubuntu-Station in eine Multi-User-Station umgewandelt wurde (Kinder, die aufwachsen), brauche ich eine Möglichkeit, Konten nach Inaktivitätszeitraum automatisch abzumelden (Gesamtabmeldung nicht nur Bildschirm sperren). Wie kann ich das in Ubuntu erreichen? Ich habe versucht, autolog zu verwenden, aber die Zeile einzufügen :

name=* idle=15 grace=60 

scheint nicht die Arbeit zu machen. Eine andere Möglichkeit ist, diese Antwort in Ubuntu-kompatibel umzuwandeln, aber ich brauche Hilfe, wenn etwas geändert werden muss ...

4

1 Antwort auf die Frage

2
DrorCohen

So habe ich mein Problem gelöst (dies meldet einen Benutzer im Leerlauf nach mindestens 30 Minuten Leerlaufzeit ab):

Erstellen Sie zuerst eine Datei und fügen Sie diesen Code ein (möglicherweise müssen Sie xprintidle installieren, bevor Sie beginnen):

#!/bin/bash # Written by cz0 2010, adapted by dror 2013  # Distributed under the terms of the GNU General Public License v2   HALFHOUR=1800000 IDLETIME=`xprintidle` QDBUS="/usr/bin/qdbus"   if [ $IDLETIME -gt $HALFHOUR ] then  logger timeout of $HALFHOUR expired. idle is $IDLETIME KDEPID=$(ps aux | grep 'startkde' | grep -v 'grep' | awk '')  KDEUSER=$(ps u $KDEPID | grep 'startkde' | awk '')   # If the DBUS_SESSION_BUS_ADDRESS environment variable is not already set correctly  # then set it by finding the environment file for the startkde process in proc and  # parsing it to get get the correct setting.   if [ -z "$DBUS_SESSION_BUS_ADDRESS" ]; then  ENVIRON_FILE=/proc/$(ps h --ppid $KDEPID -o pid | awk '')/environ  CURRENT_DBUS_SESSION_BUS_ADDRESS=$(grep -z DBUS_SESSION_BUS_ADDRESS $ENVIRON_FILE | sed -e 's/DBUS_SESSION_BUS_ADDRESS=//')  export DBUS_SESSION_BUS_ADDRESS=$CURRENT_DBUS_SESSION_BUS_ADDRESS fi  $QDBUS org.kde.ksmserver /KSMServer logout 1 0 2  else logger timeout is $HALFHOUR not expired $IDLETIME  fi 

Nun cp es nach / bin /

sudo cp myfile /bin/logoutonidle 

Machen Sie es als nächstes ausführbar

sudo chmod +x /bin/logoutonidle 

Nächste Ausführung für den Benutzer, den Sie automatisch abmelden möchten (falls erforderlich, dann für jeden Benutzer ausführen):

crontab -e 

und fügen Sie dazu die folgende Zeile hinzu (dies führt alle 15 Minuten eine cron-Prüfung durch, so dass der Benutzer nach ca. 45 Leerlaufzeiten abgemeldet wird):

*/15 * * * * export DISPLAY=:0 && /bin/logoutonidle 2>&1 

Ich möchte den Leuten in diesen Fäden, Bryan und Johanns, danken, dass sie mich in die richtige Richtung weisen.

Ergänzung zur Vermeidung von Fehlermeldungen: CODI = "Anzeige konnte nicht geöffnet werden", wenn ["$ IDLETIME" -eq "$ CODI"]; Klaus-Peter vor 7 Jahren 1