Ne pas connaître le mot de passe complique les choses, mais la solution est peut-être la suivante: est-il possible de masquer temporairement le mot de passe d'un utilisateur? (Et ensuite réinitialisez-le à ce qu'il était auparavant.)
Pour commencer:
Tout d'abord, affichez la fenêtre de connexion. Déconnectez-vous simplement de l'utilisateur actuel, utilisez le changement rapide d'utilisateur ou utilisez SSH:
cd "/ System / Library / CoreServices / Menu Extras / User.menu / Contents / Resources /"
sudo ./CGSession -suspend
Ou, pour passer immédiatement à un utilisateur spécifique, qui affichera probablement la fenêtre de connexion (cela ne fonctionne plus du tout sur mon Leopard 10.5):
sudo ./CGSession -switchToUserID 501
Ce qui est affiché maintenant dépend un peu des Préférences Système, mais supposons que ce soient les icônes des utilisateurs et leurs noms. Pour activer un nom, il faudrait taper les premières lettres. Ensuite, après Retour, l'invite de mot de passe s'affiche. Alternativement, on peut sélectionner n'importe quel nom (comme en appuyant sur la flèche vers le bas), puis appuyer sur Option-Retour pour être invité à la fois pour n'importe quel nom d' utilisateur et son mot de passe. Je ne sais pas comment on peut voir quel écran est affiché, mais gardons cela pour plus tard ...
Donc, pour sélectionner le premier nom d'utilisateur (aléatoire) et appuyez sur Option-Retour, tapez un nom d'utilisateur spécifique, appuyez sur Retour et tapez le mot de passe:
sudo osascript -e 'tell app "Événements système"
code clé 125
retour de frappe en utilisant l'option vers le bas
frappe "le nom d'utilisateur"
délai 1.0
retour de frappe
délai 1.0
frappe "le mot de passe"
délai 1.0
retour de frappe
fin dire
Ce qui précède montre une erreur qui, pour autant que je sache, ne limite pas l'utilisation:
osascript [285]: 3891612: (connectAndCheck) Les applications non fiables ne sont pas
autorisé à se connecter ou à lancer Windows Server avant la connexion.
_RegisterApplication (), Échec de l'établissement de la connexion par défaut à
le WindowServer, _CGSDefaultConnection () est NULL.
Alternativement, utilisez le script spécifique à la langue de " Script la fenêtre de connexion via Apple Remote Desktop " (peut-être qu'un jour les commentaires sur ce site montreront une meilleure solution):
dire au processus "SecurityAgent"
définir la valeur du champ de texte 1 du groupe 1 de la fenêtre 1 sur "le nom d'utilisateur"
définir la valeur du champ de texte 2 du groupe 1 de la fenêtre 1 sur "le mot de passe"
fin dire
cliquez sur le bouton "Connexion" de la fenêtre 1 du processus de candidature "SecurityAgent"
Mais le principal problème est: cela nécessite toujours le mot de passe . Cependant: aucun mot de passe n'est évidemment nécessaire lorsqu'un utilisateur a un mot de passe vide. En fait, pour les mots de passe vides, il suffit de cliquer sur l'icône d'un utilisateur. Donc, si l'envoi de touches à l'aide d'AppleScript est acceptable, alors peut-être "tout" ce qu'il reste à comprendre:
Est-il possible de masquer temporairement le mot de passe d'un utilisateur, pour permettre de démarrer (ou reprendre) la session sans connaître ce mot de passe ...?
Peut-on rendre l'AppleScript à l'abri des erreurs? Comme:
- Comment savoir si la fenêtre de connexion est visible? (peut
stat -f%Su /dev/console
peut- être aider, car cela donne lieuroot
pendant que la fenêtre de connexion est affichée)
- Comment savoir quelle fenêtre de connexion est affichée? (Comme: une montrant des icônes et des noms de connexion, ou une liste déroulante, ou peut-être seulement une invite de mot de passe si quelqu'un a choisi de passer à un utilisateur spécifique?)
- Débarrassez-vous des retards.
- Et ce message d'erreur?
(Remarque pour les tests: lors de l'utilisation du partage d'écran, il semble que la définition de la préférence Lors du contrôle des ordinateurs: Chiffrer les mots de passe et les frappes ne conserve également la connexion que lorsque la fenêtre de connexion s'affiche ou après qu'un utilisateur s'est connecté avec succès. Lors de l'utilisation de Chiffrer tout le réseau données alors mon Mac a besoin de rétablir la connexion de partage d'écran à chaque fois qu'une connexion est affichée ou un utilisateur est activée).