3 votes

Outil en ligne de commande pour vérifier si l'utilisateur actuel a le bureau ?

Existe-t-il un moyen, via la ligne de commande, de vérifier si l'utilisateur actuel dispose du bureau ? C'est-à-dire que si j'exécute un shell script dans une fenêtre, je veux pouvoir dire (dans le script) si l'utilisateur a changé de compte via le changement rapide d'utilisateur. Le shell script est toujours en cours d'exécution dans cette fenêtre de commande, mais puisque l'utilisateur est passé à un autre compte, le Bureau n'affiche pas cette fenêtre de commande.

Je partage mon Mac avec ma femme, et nous avons chacun nos propres comptes. Lorsqu'elle s'assoit devant l'ordinateur, elle passe à son compte. Je veux écrire un programme Python qui fonctionne 24 heures sur 24 et 7 jours sur 7 sur mon compte. Je veux que ce programme sache quand ma femme est devant l'ordinateur et a basculé sur son compte.

J'espère que je m'explique clairement. J'ai cherché sur Google pendant 20 minutes avant d'abandonner, car aucun des résultats de recherche ne correspondait à ce que j'essayais de trouver. Je ne sais même pas comment formuler correctement ma question.

0voto

Mateusz Szlosek Points 21762

Vous pouvez vérifier qui a la "console" avec la commande :

ps aux | grep console | grep -v grep | awk '{ print $1 }'

0voto

jherran Points 12554

Vous pouvez le faire si vous créez un "crochet de connexion". Un hook de connexion indique à Mac OS X d'exécuter un certain script lorsqu'un utilisateur se connecte. Contrairement aux éléments de démarrage qui s'ouvrent lorsqu'un utilisateur se connecte, un crochet de connexion est un script qui s'exécute en tant que Root.

Avec un crochet de connexion :

  • Le script spécifié comme crochet de connexion doit être exécutable.
  • Le hook de connexion sera exécuté en tant que Root.
  • Dans le crochet de connexion script, la variable $1 renvoie le nom court de l'utilisateur qui se connecte.
  • Les autres actions de connexion attendent que le crochet soit complètement exécuté.

Comment mettre en place un crochet de connexion

  1. Ouvrez le terminal (Applications/Utilitaires).

  2. Dans la fenêtre du Terminal, tapez :

    sudo defaults write com.apple.loginwindow LoginHook /path/to/script

    (où /path/to/script est le chemin complet vers le script que vous voulez exécuter lorsqu'un utilisateur se connecte - il n'est pas nécessaire qu'il soit dans le répertoire d'origine de l'utilisateur).

    Cela modifie le /var/root/Library/Preferences/com.apple.loginwindow fichier.

  3. Saisissez votre mot de passe à l'invite, puis appuyez sur Retour.

Article complet sur la page d'assistance d'Apple : Mac OS X : Création d'un crochet de connexion

0voto

John Smith Points 11

Ok, je pense avoir trouvé, mais je ne sais pas comment ça marche. La fonction Python suivante renvoie une valeur lorsque je suis le login actif, et une autre lorsque je ne le suis pas :

from Quartz import CGMainDisplayID
print CGMainDisplayID()

Tout ce que j'ai besoin de faire, c'est de stocker la valeur de CGMainDisplayID() lorsque le script s'exécute pour la première fois, puis de l'appeler à nouveau chaque fois que je veux voir si j'ai basculé. S'il renvoie une valeur différente, alors je sais que je suis écarté.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X