web-dev-qa-db-fra.com

Exécuter un script de déconnexion

Je me suis appris à écrire des scripts de login, mais j'ai du mal à trouver des informations pour écrire un script LOGOUT. Je souhaite pouvoir enregistrer une entrée de journal lorsqu'un utilisateur se déconnecte de la session X.

Voici ce que je veux exécuter lors de la déconnexion:

#!/bin/bash

# This script is intended to record when a user logs out of a TTY Shell or the X session.
# This will record the results to a log file: logoutScript.log

# Variables used in this script.
dDate=$(date +%Y/%m/%d)
dTime=$(date +%l:%M%P)
logDir=/opt/scripts/logs
logFile=$logDir/logoutUser.log

# Begin operation of script.
echo "$dDate, $dTime - User '$USER' has logged out of the system." >> $logFile

# End of file
exit 0

Je sais que si j'utilise ce qui suit sur un script de connexion, cela fonctionne comme je le veux. Alors, comment puis-je faire l'inverse pour un script LOGOUT?

# Detect if user is logged into TTY Shell or X session, then execute corresponding login script.
if xhost >& /dev/null ; then
    gnome-terminal -e "bash -c \"cd /opt/scripts && ./loginScripts.sh && cd $HOME \""
else 
    bash -c "cd /opt/scripts && ./loginScripts.sh && cd $HOME"
fi

J'apprécierais vraiment toute aide. Merci.

2
mc3mcintyre

Ouvrez le terminal (ou également appelé ligne de commande) en appuyant simultanément Ctrl+Alt+T ou en le trouvant dans le tiret.

Exécutez cette commande Sudo gedit /etc/lightdm/lightdm.conf. Cela ouvre l'éditeur de texte avec le fichier lightdm.conf situé dans le dossier /etc/lightdm.

Dans le fichier, vous devriez avoir une ligne [SeatDefaults]. Au-dessous de cette ligne, entrez session-cleanup-script=/path/to/your-script.sh, où /path/to/your-script.sh représente l'adresse réelle du script que vous souhaitez exécuter.

Remarque: assurez-vous que votre script est défini sur exécutable en exécutant:

Sudo chmod +x /path/to/script.sh

Sauvegarder et quitter.

REMARQUE: à partir de la version 14.04, le fichier de configuration n'existe pas et doit être créé manuellement OR copié à partir d'un exemple de fichier à l'aide de la commande suivante:

Sudo sh -c 'zcat /usr/share/doc/lightdm/lightdm.conf.gz > /etc/lightdm/lightdm.conf'

Si vous voulez juste un script sur une déconnexion de Lime un terminal, il suffit de le mettre dans ~/.bash_logout.

0
Camden