# Script pour changer de session utilisateur



## Mireibel (3 Décembre 2013)

Bonjour,

Je cherche un AppleScript qui me permette de changer d'utilisateur
(en redémarrant ou en quittant la session en cours)
sans avoir à taper ni son nom ni son mot de passe (enregistrés dans le script)

merci pour votre aide


----------



## quark67 (9 Décembre 2013)

Ça n'existe pas à ma connaissance. Tu peux automatiser la fermeture d'une session (*log out*), mettre en veille (*sleep*), redémarrer (*restart*) ou éteindre (*shut down*). 
Ce que tu demandes me semble impossible pour la raison suivante : 
Supposons qu'il existe une commande *swap to user* "utilisateur" *with password* "motdepasse".
Cette commande est lancée par "utilisateurActuel". La partie « fermeture de la session » ne pose pas de problème, "utilisateurActuel" est encore actif pendant que les applications se ferment. Puis arrive le moment où la session est fermée. À ce moment "utilisateurActuel" n'est plus actif. Il ne peut alors pas envoyer la commande d'ouverture d'une nouvelle session en fournissant le nom d'utilisateur et le mot de passe.

Par contre, il est possible de passer à un autre utilisateur, en gardant la session actuelle active (c'est la permutation rapide).

Voir ici : An AppleScript to ease fast user switching - Mac OS X Hints

Si tu n'es pas trop à l'aise avec l'anglais, il faut enregistrer le script donné avec le nom du compte dans lequel tu veux permuter.
Pour que le script fonctionne, il faut également activer l'accès au script de l'interface graphique (GUI scripting). Il faut pour cela cocher dans les préférences système Accessibilité la case d'accès aux périphériques d'aide (sous Mavericks, pour raison de sécurité, c'est plus compliqué, mais d'après un autre message t'es sous 10.7 donc pour toi c'est aisé).

Je remets ici le code qui provient du site Macworld.com (pour le cas où ça change d'URL ou bien devient inaccessible) :

```
set thePassword to "password"
set N to name of (info for (path to me))
set AppleScript's text item delimiters to (".")
set N to first text item of N
set AppleScript's text item delimiters to ""
set N to do shell script "/usr/bin/id -u " & N
do shell script "/System/Library/CoreServices/Menu\\ Extras/User.menu/Contents/Resources/CGSession -switchToUserID " & N
tell application "System Events"
	tell process "SecurityAgent" to set value of text field 1 of group 1 of window 1 to thePassword
	click button 2 of window 1 of application process "SecurityAgent"
end tell
```

Je n'ai pas testé le code (qui date de 2008), peut-être faudra-t-il l'adapter pour 10.7.


----------



## Mireibel (10 Décembre 2013)

Merci pour cette réponse claire et précise.
J'ai déjà jeté un oeil sur ce script de changement d'utilisateur. J'ai pas encore réussi à le faire fonctionner en 10.7, il faut que je m'y remette.
Ce script serait pas mal si on pouvait quitter le compte devenu inutile (avec un script "shut down", par exemple) sans avoir à retaper Nom et Mot de passe au retour sur l'utilisateur souhaité.

Quant à ma demande d'origine, dans ma petite tête, je me suis dis que le déroulement pourrait s'opérer ainsi:
(condition de base: récupérer le processus de boot sur un compte - loggin et password - dans la bibliothèque système...)

- L'ordi démarre sur un compte sans mot de passe
- Script: Si les conditions d'heures et de jours sont favorables - remplacer séquence de boot
définie dans les préférences par la séquence compte souhaité dans la bibliothèque Système.
- Script "restart" 
- Script: revenir aux conditions de boot normales

Le plus difficile étant de localiser ce processus de boot et de voir s'il est "jouable" dans un script.

Y'a du boulot, hein?


----------



## Mireibel (18 Février 2014)

Depuis mon dernier post, j'ai progressé.
J'ai fait un script, inspiré des conseils de quark67, qui me permet de permuter vers un autre utilisateur sans avoir à saisir le login et mot de passe qui sont intégrés au script.
Ça marche, mais évidemment l'ancien utilisateur tourne toujours en arrière plan.
Alors j'ai tenté de faire démarrer, après un délai, un script sur cet utilisateur masqué avec la commande pour quitter la session.
Ça fonctionne, mais visiblement le System n'aime pas trop, parce qu'ensuite dès que je demande à ma session principale de quitter, la roue dentée tourne sans fin et je n'arrive plus à avoir la fenêtre de login des utilisateurs.
Shut down forcé du Mac et fsck obligatoire pour réparer les dégâts!
Visiblement quelque démons n'aiment pas et ne retrouvent pas leurs petits.

Voyez-vous une solution? 
Merci d'avance.


----------

