Vous n'êtes pas identifié(e).
Pages : 1
et un ~/.bash_profile contenant :
Le script mountPandaShares fait simplement les mount nécessaires pour accéder aux partages réseau.
Mais, à ma grande surprise, le contenu de ~./bashrc est bien exécuté (ce qui semble normal), mais aucune autre instruction de ~/.bash_profile (ce qui semble anormal !). Bon, qu'à cela ne tienne, j'ajoute dans /etc/lightdm.conf :
mais ça ne fonctionne pas mieux
Pour ce qui est de la fin de session, idem, ~/.bash_logout (qui lance les démontages des partages réseau uniquement) ne fonctionne pas... Pire : l'ajout dans /etc/lightdm.conf (toujours dans la section [SeatDefaults]) de :
fait qu'il faut attendre une bonne trentaine de secondes avant que la déconnexion se fasse, mais sans avoir fait les unmount demandés dans ~/.bash_logout...
Bon, manifestement, il y a un truc qui m'échappe ou que je fais de travers, mais quoi ?
Hors ligne
…J'ai donc fait un ~/.profile qui contient :…
…et un ~/.bash_profile contenant :…
… le contenu de ~./bashrc est bien exécuté (ce qui semble normal), mais aucune autre instruction de ~/.bash_profile…
Dans mon système debian,
Donc, en traduisant ces commentaires,
si le fichier ~/.bash_profile existe,
alors le fichier ~/.profile ne sera PAS exécuté.
=======
…l'ajout dans /etc/lightdm.conf …
Sur mon système,
il n'existe pas de fichier /etc/lightdm.conf
par contre,
il existe bien un fichier /etc/lightdm/lightdm.conf
=======
Les scripts exécutés avant la connexion et après la déconnexion
sont exécutés par le compte utilisateur root
Donc,
est équivalent à :
et
est équivalent à :
Hors ligne
Donc, en traduisant ces commentaires,
si le fichier ~/.bash_profile existe,
alors le fichier ~/.profile ne sera PAS exécuté.
Ok, j'avais zappé ça !
Reste donc à espérer que la réciproque soit vraie : si pas de ~/.bash_profile ni de ~/.bash_login, alors ~/.profile est exécuté... Je vais tester ça.
Sur mon système,
il n'existe pas de fichier /etc/lightdm.confmichel@debg53sw:~$ ls /etc/lightdm.conf
ls: impossible d'accéder à '/etc/lightdm.conf': Aucun fichier ou dossier de ce type
michel@debg53sw:~$par contre,
il existe bien un fichier /etc/lightdm/lightdm.confmichel@debg53sw:~$ ls /etc/lightdm/lightdm.conf
/etc/lightdm/lightdm.conf
michel@debg53sw:~$
Ooops ! Autant pour moi : j'ai loupé une marche dans l'escalier hiérarchique du chemin...
Les scripts exécutés avant la connexion et après la déconnexion
sont exécutés par le compte utilisateur root
Donc,greeter-setup-script=~/.bash_profileest équivalent à :
greeter-setup-script=/root/.bash_profile
etsession-cleanup-script=~/.bash_logoutest équivalent à :
session-cleanup-script=/root/.bash_logout
Arrrgh... Je n'avais effectivement pas fait attention à ce "détail"
Espérons que ~/.profile fonctionne, une fois ~/.bash_login supprimé, parce qu'il me faut des mount adaptés pour chaque utilisateur...
Une fois tout ça remis d'aplomb, il va rester le problème du logout... Pour le moment, je pourrai faire avec session-cleanup-script dans /etc/lightdm/lightdm.conf : il n'y a pas de gros inconvénients à faire démonter par root les partages non montés. Mais si j'ai autre chose de spécifique à l'utilisateur à faire, ça va être problématique...
Hors ligne
Hors ligne
suivi d'un tas d'options commentées : si on met quelque chose à cet endroit, évidemment ça ne fonctionne pas ! il faut le mettre au-dessous de
entre crochets !
Après, je n'ai pas trop cherché pourquoi, mais session-setup-script n'aime pas ~/ Peut-être simplement parce qu'il va chercher le script dans /root, alors que le mien est dans les /home des utilisateurs ? Quoi qu'il en soit, ça ne fait pas mon affaire !
Le .profile (/home/user/.profile) est bien pris en compte, mais il fait tout planter (la session commence à s'ouvrir, mais les icônes n'apparaissent pas et le sablier reste indéfiniment, il n'y a plus qu'à killer le process lightdm... Quant au .bash_logout, il ne s'exécute pas
Du coup, j'ai dû contourner les problèmes :
- Au login, j'utilise "Applications au démarrage" pour lancer mon script
- Au logout, session-cleanup-script dans lightdm.conf (qui s'exécute en tant que root, c'est bien précisé ici contrairement à session-setup-script) m'appelle le script de démontage de tous les partages réseau, et appelé par le chemin absolu, donc script unique pour tous les utilisateurs
Pas génial, pas tout à fait ce que je voulais, mais bon, c'est fonctionnel.
Hors ligne
Hors ligne
…le .bash_logout fonctionne que pour une fermueture de session ssh pas pas graphique .…
C'est parce que, pour établir la connexion ssh et lancer une instance du shell sur la machine à laquelle tu t'es connectée,
tu as eu besoin de t'identifier et de donner ton mot de passe (<=> utiliser un "login shell")
Par contre, dans l'interface graphique, tu t'es déjà identifié pour ouvrir ta session graphique de l'environnement de bureau,
et donc, quand tu lances une fenêtre d'émulateur de terminal, l'instance du shell lancé n'est pas un "login shell" <=> on ne te demande plus d'entrer un nom de login et le mot de passe correspondant.
Dernière modification par MicP (30-12-2019 13:56:33)
Hors ligne
- Systemd est-il une solution pour gérer ces scripts de login logout ? : https://doc.ubuntu-fr.org/creer_un_service_avec_systemd
Tiens, oui, ça a l'air d'être intéressant. Je ne sais pas si ça pourrait vraiment servir dans mon cas (apparemment, le logout est difficile à détecter !), mais ça peut être utile dans plusieurs cas...
Ton script devrait-il utiliser l'option nohup pour se détacher de son lanceur pour ne pas bloquer la suite du lanceur .profile ?
Peut-être... Mais je comprendrais qu'il bloque l'exécution du .profile le temps qu'il s'exécute lui-même, alors que là il fait tout planter définitivement ! Bon, le coup des applications au démarrage est finalement pas mal, c'est côté logout que j'aurais aimé faire mieux, mais apparemment ce n'est pas possible.
Par contre, dans l'interface graphique, tu t'es déjà identifié pour ouvrir ta session graphique de l'environnement de bureau,
et donc, quand tu lances une fenêtre d'émulateur de terminal, l'instance du shell lancé n'est pas un "login shell" <=> on ne te demande plus d'entrer un nom de login et le mot de passe correspondant.
Parle-t-on bien de la même chose ? Oui, si on lance une fenêtre d'émulateur de terminal, il ne s'agit pas d'un login shell. Par contre, la session graphique elle-même devrait pouvoir être considérée comme tel, et la fermeture de session comme la fermeture de ce login shell, non ? Bon, c'est vrai qu'une session graphique n'est pas vraiment un shell... Mais c'est quand même une "login session" !
Hors ligne
Ton script devrait-il utiliser l'option nohup pour se détacher de son lanceur pour ne pas bloquer la suite du lanceur .profile ?
Peut-être... Mais je comprendrais qu'il bloque l'exécution du .profile le temps qu'il s'exécute lui-même, alors que là il fait tout planter définitivement ! Bon, le coup des applications au démarrage est finalement pas mal, c'est côté logout que j'aurais aimé faire mieux, mais apparemment ce n'est pas possible.
- En plus du nohup, tu pourrais tester d'ajouter un délai au debut de ton script ( pour que la session graphique charge proprement tout avant que ton script commence à faire ces montages ) avec une commande sleep ? Possible que ton script lancais une commande qui bug car la session n'était pas entierement démarrée ?
- Tu peux aussi tenter de faire du debug en demandant à ton script de loger chaque étape dans unfichier texte, comme ca tu pourra voir à quelle étape il a bloqué ?
- Concernant le menu graphique "Applications au démarrage", je suppose que tu peux retrouver le fichier de conf sur lequel il se base ? Chez moi dans XFCE je l'ai trouvé. Ca peut aider si t'as besoin de faire ca en commande ou faire des scripts .
On pourrait mettre tout cas dans une page wiki debian facile, pour chaque environnement de bureau . Y'a pas de tuto pour ce que tu cherchais pour le moment
Hors ligne
Hors ligne
Pages : 1