Como faço o logoff automático de usuários do Ubuntu

4

Desde que minha estação Ubuntu foi transformada em Multi user Station (crianças crescendo) eu preciso de uma maneira de fazer logoff automaticamente contas após o período de inatividade (total de logoff não apenas a tela de bloqueio). Como posso conseguir isso no Ubuntu? Tentei usar o autolog , mas inserindo a linha:

name=*          idle=15 grace=60

não parece fazer o trabalho. Outra opção é transformar esse responda ao Ubuntu compatível, mas preciso de ajuda no que precisa mudar ...

    
por DrorCohen 15.12.2013 / 16:59

1 resposta

2

Foi assim que resolvi meu problema (isso será feito por um usuário inativo após pelo menos 30 minutos de tempo ocioso):

Primeiro, crie um arquivo e coloque este código nele (talvez seja necessário instalar o xprintidle antes de começar):

#!/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 '{print $2}') 
    KDEUSER=$(ps u $KDEPID | grep 'startkde' | awk '{print $1}') 

# 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 '{print $1}')/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

Agora copie para / bin /

sudo cp myfile /bin/logoutonidle

Em seguida, torne-o executável

sudo chmod +x /bin/logoutonidle

Em seguida, execute o usuário que você deseja fazer logout automaticamente (se necessário, em seguida, execute-o em todos os usuários):

crontab -e

e adicione a seguinte linha (isso fará com que o cron verifique a cada 15 minutos, então o pior caso é que o usuário será desconectado após ~ 45 tempo ocioso):

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

Gostaria de agradecer às pessoas nestes tópicos Bryan e Johanns para me apontar na direção certa.

    
por 23.12.2013 / 20:37