[MàJ 26/07/18] Astuce macOS : Déverrouiller la session d'un Mac à distance
Votre Mac est acessible depuis SSH ? De plus, votre Mac se vérouille au lancement de l'économiseur d'écran ? C'est une bonne chose, même une excellente chose.
Et pour finir, vous souhaitez ouvrir votre session à quelqu'un sans forcément lui donner votre mot de passe ?
Ce guide est fait pour vous !
Le principe est le suivant. Avec les commandes directes du terminal, il n'est pas possible de dévérouiller la session. Cependant, avec AppleScript, on peut demander à "écrire" dans l'interface. Nous allons donc combiner l'accès à distance du terminal, et les commandes AppleScript pour dévérouiller la session.
Commencez par vous connecter au Mac en SSH.
A partir d'ici, il y a plusieurs cas, mais qui finalement se gèrent de la même manière.
Considérons, que la session est déjà lancée, mais qu'elle a été vérouillée. Nous n'avons donc que le mot de passe à remplir.
Il faut donc reproduire le comportement que vous auriez avec un clavier, à savoir faire afficher la demande de mot de passe, l'insertion du mot de passe, et la validation de celui-ci. Cela fait 3 étapes à réaliser en 3 commandes.
osascript -e 'tell application "system events" to keystroke return'
osascript -e 'tell application "system events" to keystroke "password"'
osascript -e 'tell application "system events" to keystroke return'
A noter que l'astuce en tant que telle, n'est pas spécifique au dévérouillage de session, mais elle peut être utilisée pour d'autres actions.
En bonus, voici la commande qui permet de re-vérouiller le Mac, sous réserve que vous ayez séléctionner "immédiatement" comme durée avant la demande de mot de passe après une suspension d'activité ou le lancement de l'économiseur d'écran dans Préférences Systèmes > Sécurité et confidentialité.
Il suffit simplement de relancer l'économiseur d'écran :
open -a ScreenSaverEngine
Ou si vous le préférez, suspendre l'activité avec l'une des deux commandes suivantes
sudo pmset sleep
sudo shutdown -s now
pmset et shutdown sont deux commandes capables de faire beaucoup de choses, que nous explorerons peut être plus tard.
Mise à jour du 26/07/2018
En utilisant un script similaire pour des tâches récurrentes, je me suis rendu compte, que, pour une raison que j'ignore, il arrivait parfois que les lettres ne s'affichent pas dans l'ordre. Voici donc une version modifiée, et plus fiable du script, qui va écrire les lettres une à une afin que l'ordre des caractères soit respecté
monPass="password"
osascript -e 'tell application "system events" to keystroke return'
for ((i = 0; i<${#monPass}; i++ )); do
osascript -e 'tell application "system events" to keystroke "'${monPass:$i:1}'"'
done
osascript -e 'tell application "system events" to keystroke return'
Si vous preférez le mettre dans un fichier script pour le lancer quand nécessaire, sans y mettre le mot de passe en clair, vous pouvez toujours le passer en paramètre
#!/bin/bash
monPass=$1
osascript -e 'tell application "system events" to keystroke return'
for ((i = 0; i<${#monPass}; i++ )); do
osascript -e 'tell application "system events" to keystroke "'${monPass:$i:1}'"'
done
osascript -e 'tell application "system events" to keystroke return'