Question Changement rapide d'utilisateur par script sur OSX Lion


Je voudrais automatiser le changement rapide d'utilisateur pour un ensemble de machines. Ma solution actuelle et brisée est cet extrait de code, adapté des scripts Leopard / SL trouvés en ligne:

set thePassword to "foo"
set N to "1027"
do shell script "/System/Library/CoreServices/Menu\\ Extras/User.menu/Contents/Resources/CGSession -switchToUserID " & N
delay 0.8
tell application "System Events"
  keystroke thePassword
  delay 1
  keystroke return
end tell

Le mot de passe semble être entré avec succès, mais keystroke return ne parvient pas à connecter l'utilisateur (l'écran "vibre" pour indiquer une tentative échouée). La chose amusante est que le fait d'appuyer sur la touche Entrée manuellement termine la connexion (d'où mon affirmation que le mot de passe est entré avec succès)

Des idées?

Merci!


2
2018-03-13 13:19


origine


Aucune idée concrète, mais peut-être faut-il tab puis appuyez sur le bouton pour vous connecter? - slhck
@ Slhck: non, essayé, pas de chance. Merci pour la suggestion cependant! - Rom1
Vous voudrez plutôt automatiser le passage à l'utilisateur plutôt que d'automatiser la saisie de ses mots de passe, considérez que tout événement briserait votre script. - Tom Wijsman


Réponses:


Je ne peux pas vous dire ce qui pourrait aller de travers, mais voici une solution de contournement d'il y a plusieurs années:

Evénements système "Dire l'application" "Retour clavier sur les iMac Intel

Pour l'essentiel, l'auteur de cet article dit que dans un scénario très similaire, la clé de retour ne déclencherait une connexion avec succès sur les iMac PowerPC; sur les machines Intel, le script définit le délai d’expiration de l’affichage sur 1 minute, attend 65 secondes, puis d’une manière ou d’une autre, une fois l’affichage endormi, le "retour de frappe" fonctionne. (!)

Cela semble assez horrible, mais peut-être que vous pouvez adapter quelque chose de concret à cela.


1
2018-03-18 00:17





Il semble y avoir deux versions principales du script qui circulent.

Le premier est similaire au vôtre, sauf que "retour de frappe" est dupliqué deux fois (la source):

osascript <<EOF
tell application "System Events"
keystroke "USERNAME"
keystroke tab
delay 0.5
keystroke "PASSWORD"
delay 0.5
keystroke return
keystroke return
end tell
EOF 

Quelqu'un même compris que deux fois ne suffit pas:

osascript <<EndOfMyScript
tell application "System Events"
keystroke "USERNAME"
keystroke tab
delay 0.5
keystroke "PASSWORD"
delay 0.5
keystroke return
keystroke tab
delay 0.5
keystroke "PASSWORD"
delay 0.5
keystroke return
keystroke return
keystroke return
keystroke return
keystroke return
end tell
EndOfMyScript

Tandis que quelqu'un d'autre préfère cette solution, qui fonctionnera si vous avez une liste d'utilisateurs avec "Autre ..." dans la fenêtre de connexion:

osascript <<EOT
set username_ to "username"
set password_ to "password"
tell application "System Events"
key code 125 -- Down Arrow
key code 125 -- Down Arrow
delay 1
key code 125 -- Down Arrow
key code 125 -- Down Arrow
key code 125 -- Down Arrow
key code 125 -- Down Arrow
key code 125 -- Down Arrow
key code 125 -- Down Arrow
delay 0.5
key code 36 -- Return
delay 1
tell process "SecurityAgent" to set value of text field 1 of group 1 of window 1 to username_
tell process "SecurityAgent" to set value of text field 2 of group 1 of window 1 to password_
click button "Log In" of window 1 of application process "SecurityAgent"
end tell
EOT

(Répondu par un utilisateur non-Mac)


0
2018-03-19 18:55