Script fermeture session

Bonjour,

C’est peut être une question con, mais, comme il y a le bashrc pour l’ouverture de session, y a t’il un script de fermeture de session ?
En tous cas, je trouve rien sur la toile

Au pire, si quelqu’un peut me dire où se trouve le script qui correspond au bouton deconnexion du menu XFCE

Merci :slightly_smiling:

EDIT :

j’ai bien trouvé le /usr/bin/xfce4-session-logout, mais c’est un binaire :frowning: et j’ai pas trop envie de devoir compiler quoi que ce soit

[quote=“man bash”]…
Lorsqu’un interpréteur de commandes de connexion termine, bash lit et exécute les commandes du fichier ~/.bash_logout, s’il existe.

[/quote]
[mono]~/.bash_logout[/mono] est un script dont le nom commence par un point => c’est donc un fichier “caché”.

[quote=“man ls”]…
-a, --all
inclure les entrées débutant par « . »
…[/quote]

Tu souhaites exécuter ton script à la fermeture de la session bash ou de ton environnement graphique ?

Pour bash, il y a .bash_logout. Pour l’environnement graphique, ça doit dépendre…

EDIT : grilled

@ Dunatotatos: Effectivement, ma réponse était incomplète, car il reste à trouver une solution concernant la fermeture de [strike]session graphique[/strike]. déconnexion à l’environnement de Bureau.

Sur LightDM tu peut configurer l’exécution d’un script lors de la déconnexion d’un utilisateur …
je ne sais pas pour les autres «DM»

merci, j’avais jamais vu qu’il y avait le fichier *logout…

Je vous explique le contexte pour la question graphique du coup :

J’ai configuré une serveur vnc qui passe au travers d’un tunnel ssh.

En local, je lance la commande : [mono]ssh -L 15000:localhost:5901 login@192.168.1.100[/mono] qui m’ouvre une console distance, dans laquelle j’ai ajouter le lancement du [mono]vnc4server[/mono] dans [mono].bashrc[/mono].
Ensuite [mono]vncviewer localhost::15000[/mono] pour ouvrir la session graphique distante.

Le problème est à la déconnexion :
Si je ferme la fenêtre vnc ou si je quitte la console ssh, le serveur vnc reste ouvert. Ce qui m’empêche de me connecter avec un autre login depuis le même poste.

J’ai donc fait un script qui lance [mono]vnc4server -kill :lebonnumero[/mono]

seulement, il faudrait que je puisse l’appeler que ce soit en quittant que la console ssh ou en fermant la session graphique dans vnc.

J’utilise xfce4, mais j’aimerai que ça fonctionne quelque soit l’environnement.

PS: si ça tenait qu’à moi, je laisserai comme ça, mais je vais ouvrir l’accès à des amis qui ne comprennent pas grand chose à tout ça.

Mimoza > j’utilise lightdm. Tu dois parler de [mono]session-cleanup-script=[/mono]

Là il faut absolument que mon script soit executé en tant que l’utilisateur qui se déconnecte. Je pense qu’avec cette commande, il sera executé en root.

Si j’ai bien compris : le [mono].bashrc[/mono] du compte de l’utilisateur distant a lancé le serveur vnc au moment de la connexion ssh,
mais quand le client de ce serveur vnc se déconnecte, le serveur vnc reste actif => “Ce qui m’empêche de me connecter avec un autre login depuis le même poste.”

Il me semble qu’il faudrait donc chercher un signal déclencheur du côté du serveur vnc : quand le client se déconnecte du serveur vnc.

rien n’a l’air prévu dans ce sens. La seule façon que je vois, c’est d’analyser soit les logs de vnc, soit le résultat de [mono]who[/mono]

[quote=“vohu”]Mimoza > j’utilise lightdm. Tu dois parler de [mono]session-cleanup-script=[/mono]

Là il faut absolument que mon script soit executé en tant que l’utilisateur qui se déconnecte. Je pense qu’avec cette commande, il sera executé en root.[/quote]

En effet, il y a d’autre hook mais ils sont quasiment tous exécuté en root. :confused:
Et le problème du .bashrc_logout est qu’il sera aussi exécuté si tu te déconnecte d’une console virtuelle dans ton interface graphique.

Pas simple comme problématique.
Au pire je verrais bien un programme, lancé au démarrage de ta session graphique, qui ne fait rien en tâche de fond, et qui exécute du code seulement quand il reçoit un signal de fermeture (SIGTERM). Ça fait bien bricolage mais bon :mrgreen:

Voilà ce que j’ai fait pour le moment :

  • j’ai créé un script python qui nettoie les serveur vnc exécutés (facile, y a un fichier .pid par serveur dans ~/.vnc/)
  • j’appelle ce script dans .bashrc_logout et j’ai fait un raccourcis sur le tableau de bords de XFCE pour remplacer l’habituel déconnecter.
  • mon serveur vnc est lancé depuis .bashrc et crée un fichier temporaire. Si ce fichier existe, il ne se lance pas.

Je vais aussi essayer ta solution du programme avec SIGTERM. Juste pour refaire un peu de C/gtk.

Le shell peut tout aussi écouter des signaux par exemple :