Je voudrais utiliser un script pour trouver le nom d'utilisateur - de l'utilisateur qui est actuellement sur la console physique (qui a la commande du clavier, de la souris et de l'affichage graphique)?
Je ne veux pas seulement savoir qui exécute X (car la console actuelle peut être commutée sur un autre terminal et un autre utilisateur).
Pour clarifier: les
commandes comme w
, who
etc. montrent qui est connecté à quel terminal. C’est simple. J'aimerais cependant savoir à qui appartient actuellement la console physique (écran, clavier, etc.). Par exemple, si deux utilisateurs exécutent des affichages: 0 et: 1, et que je peux basculer entre les affichages avec ctrl+ alt+ 7et ctrl+ alt+ 8, je voudrais savoir quel utilisateur a actuellement la connexion entre son affichage et l'écran physique réel .
Une autre précision:
je ne suis pas intéressé à connaître mon propre nom d'utilisateur. J'ai un script, exécuté en tant qu'un autre utilisateur ou root, qui doit savoir qui utilise l' affichage physique . Il peut y avoir plusieurs sessions X exécutées par différents utilisateurs, certaines virtualisées, certaines connectées à un serveur X distant, mais je ne suis intéressé que par celle qui affiche réellement la sortie sur le moniteur.
Encore une autre précision:
quelle que soit la commande, la sortie doit être différente après avoir appuyé sur Ctrl+ Alt+ F1(basculement vers une autre console virtuelle).
Réponses:
J'ai bien peur de ne pas pouvoir vous donner de réponse précise (car je ne connais pas bien la technologie), mais je pense que vous pouvez le découvrir en utilisant D-Bus et ConsoleKit.
Par exemple, lorsque je passe de X à un VT et vice-versa, j'obtiens cette écoute
dbus-monitor
:Plus précisément, vous pouvez utiliser la méthode GetActiveSession . Voici comment
dbus-send
(peut nécessitersudo
):Ensuite, selon votre application, vous voudrez vérifier les propriétés de l'objet renvoyé, qui devraient être un chemin d'objet vers une session .
la source
dbus-send --system --type=method_call --print-reply --dest=org.freedesktop.ConsoleKit /org/freedesktop/ConsoleKit/Session2 org.freedesktop.ConsoleKit.Session.GetUser
qui répond avec l'ID utilisateur actuel. De là, la fonction de bibliothèque getpwuid peut obtenir le nom d'utilisateur.Vous pouvez utiliser la commande w pour voir qui est connecté. Le temps d'inactivité et ce qui devrait vous dire ce qui est en cours d'exécution - dans ce cas, gdm indique une connexion active et le temps d'inactivité indique que l'utilisateur n'a pas été sur le système depuis 2 jours. Comparez cela avec la connexion de blackbeauty, qui a un temps d'inactivité de 0,00, ce qui indique qu'elle est actuellement utilisée.
la source
Il y a plusieurs façons:
whoami
w
echo $USER
logname
la source
Une autre commande est
Il montre le nom d'utilisateur actuel de logeed
la source