Page 1 sur 1

[bash] Commande who pour session X (résolu)

Publié : lun. 22 juil. 2013, 12:48
par lesebas
Bonjour,

Je cherche, dans un script, à connaitre le nom des utilisateurs logués sur une session graphique et quel tty ils utilisent. La commande who me renvoie uniquement les utilisateurs logués en session console (tty1 à tty6)mais rien sur les session X. Quelqu'un a-t-il une idée?

Re: [bash] Commande who pour session X (en cours)

Publié : lun. 22 juil. 2013, 13:04
par benjarobin

Re: [bash] Commande who pour session X (en cours)

Publié : lun. 22 juil. 2013, 20:30
par lesebas
Salut,

Bien c'est pas mieux... loginctl ne me retourne que mes sessions, que je lance depuis n'importe quelle console (voir un xterminal ouvert par un autre user):

Code : Tout sélectionner

[stephanie@Vulpus ~]$ loginctl
   SESSION        UID USER             SEAT            
         1       1000 sebastien        seat0           
         4       1000 sebastien        seat0           

2 sessions listed.
[stephanie@Vulpus ~]$ 
Voila ce que me retourne cat /etc/passwd :

Code : Tout sélectionner

[sebastien@Vulpus ~]$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/bin/false
daemon:x:2:2:daemon:/sbin:/bin/false
mail:x:8:12:mail:/var/spool/mail:/bin/false
ftp:x:14:11:ftp:/srv/ftp:/bin/false
http:x:33:33:http:/srv/http:/bin/false
uuidd:x:68:68:uuidd:/:/sbin/nologin
dbus:x:81:81:dbus:/:/sbin/nologin
nobody:x:99:99:nobody:/:/bin/false
sebastien:x:1000:100:Sébastien:/home/sebastien:/bin/bash
avahi:x:84:84:avahi:/:/bin/false
polkitd:x:102:102:Policy Kit Daemon:/:/bin/false
usbmux:x:140:140:usbmux user:/:/sbin/nologin
lxdm:x:121:121::/var/lib/lxdm:/bin/bash
stephanie:x:1001:100:Stéphanie:/home/stephanie:/bin/bash
gdm:x:120:120:Gnome Display Manager:/var/lib/gdm:/sbin/nologin

Re: [bash] Commande who pour session X (en cours)

Publié : lun. 22 juil. 2013, 21:40
par lesebas
En fait j'utilise XFCE avec lxdm pour me loguer. loginctl retourne en fait l'ID de la première session ouverte, ensuite quand j'ouvre une autre session en repassant par lxdm c'est comme si les nouveau utilisateur utilisait la session initial. D'ailleurs si je ferme la première session loginctl retouren toujours le nopm de l'utilisateur qui veint d'être déloguer... Je ne sais pas si c'est clair :?

Re: [bash] Commande who pour session X (en cours)

Publié : lun. 22 juil. 2013, 22:30
par benjarobin
loginctl est à lancer en root bien sûr, pour des questions évidente de sécurité ton user ne peut voir que ses propres sessions

Re: [bash] Commande who pour session X (en cours)

Publié : lun. 22 juil. 2013, 23:35
par lesebas
Non ce n'est pas mieux en root :

Code : Tout sélectionner

[root@Vulpus sebastien]# loginctl
   SESSION        UID USER             SEAT            
         1       1001 stephanie        seat0           

1 sessions listed.
[root@Vulpus sebastien]# 
Par contre si j'ouvre des sessions dans des terminaux (tty 1 et 2 pour l'exemple) en lançant la commande même sans être en root je les vois :

Code : Tout sélectionner

[root@Vulpus sebastien]# exit
exit
[sebastien@Vulpus ~]$ loginctl
   SESSION        UID USER             SEAT            
         1       1001 stephanie        seat0           
         2       1000 sebastien        seat0           
         3       1001 stephanie        seat0           

3 sessions listed.
[sebastien@Vulpus ~]$

Re: [bash] Commande who pour session X (en cours)

Publié : mar. 23 juil. 2013, 20:24
par lesebas
Bon j'ai réussi à contourner le problème en ajoutant un petit script à l'ouverture des sessions qui enregistre le numéro de terminal et le nom d'utilisateur :

Code : Tout sélectionner

#!/bin/bash

list_user="/tmp/list_user_connected"
user_tty=$(sudo fgconsole)
user_name=$(eval whoami)

#vérifie si le fichier contenant la liste des utilisateurs connectés existe
# s'il existe, supprime l'utilisateur qui se connecte (deconnexion + reconnexion)
# ajoute le numéro de tty + nom user

if test -e $list_user 
then
	sed -i "/$user_name/d" $list_user		
	echo -e $user_tty" "$user_name\\r >> $list_user
else
	echo -e $user_tty" "$user_name\\r > $list_user
	chmod g+rw $list_user
	chmod o+rw $list_user
fi
Mais c'est quand même bizarre tout ça!

Re: [bash] Commande who pour session X (en cours)

Publié : mer. 31 juil. 2013, 17:11
par tuxce
Tu devrais essayer ceci : https://bbs.archlinux.org/viewtopic.php ... 8#p1247658
Tu pourrais aussi essayer avec lightdm par exemple (comme le souci semble lié à lxdm ...)

Re: [bash] Commande who pour session X (en cours)

Publié : mar. 13 août 2013, 23:00
par lesebas
tuxce a écrit :Tu devrais essayer ceci : https://bbs.archlinux.org/viewtopic.php ... 8#p1247658
Non ça n'ai pas vraiment mon problème...

J'ai bien suivi ce post, mais la correction est déja inclus dans la version courrante de lxdm :

https://bbs.archlinux.org/viewtopic.php?id=143913
tuxce a écrit :Tu pourrais aussi essayer avec lightdm par exemple (comme le souci semble lié à lxdm ...)
Par contre je viens de tester lightdm... tout fonctionne correctement du coté de loginctl... donc visiblement ça vient de lxdm. J'attends d'avoir d'autres avis pour reporter un bug!

Re: [bash] Commande who pour session X (en cours)

Publié : ven. 06 sept. 2013, 13:37
par lesebas
Bon il s'agit bien d'un bug de lxdm :

https://bugs.archlinux.org/task/36533

Mais apparemment pas trop de solution pour le moment... j'ai reporté dans le upstream :

https://sourceforge.net/tracker/?func=d ... tid=894869

Re: [bash] Commande who pour session X (en cours)

Publié : jeu. 12 sept. 2013, 23:25
par lesebas
OK bug résolu dans la dernière version du git de lxdm ! :D