1 votes

double saisie du mot de passe pour accéder au compte

J'ai le Require password 4 hours after sleep ... option dans Security and Privacy Préférences du système et je lance un script avec launchd pour suspendre ma session à une certaine heure de la journée (voir cette question pour plus de détails). Le résultat (lorsque l'intervalle de temps et l'heure spécifique de la journée se chevauchent) est que mon compte est doublement verrouillé, un pour chaque action, ce qui nécessite une double saisie du mot de passe.

Existe-t-il un moyen de vérifier (par exemple dans un shellscript ou un Applescript) si mon compte est déjà verrouillé ou non avant d'appeler /System/Library/CoreServices/Menu Extras/User.menu/Contents/Resources/CGSession -suspend commande ?

0 votes

Depuis que je suis passé à la version 10.8.2, j'obtiens également cette double connexion. Et je n'ai modifié aucun paramètre. Et je n'exécute aucun scripts d'heure du jour.

1voto

E1Suave Points 1949

Le script suivant devrait faire ce dont vous avez besoin.

TESTÉ SUR :

  • 10.6.x
  • 10.7.4

Empêche la commande de suspension si l'heure de connexion forcée de Screensaver est déjà atteinte.

REMARQUE : Changez le USER_PATH pour correspondre à celle de l'utilisateur que vous voulez gérer.

#!/bin/bash

USER_PATH="/Users/YOUR_USER"

ELAPSED_TIME=$(ps -eo etime,command | grep "ScreenSaverEngine.app" | grep -v "grep" | sed 's/:.*//' | awk '{print $1}')
CHOSEN_TIME=$(/usr/libexec/PlistBuddy -c "Print:askForPasswordDelay" ${USER_PATH}/Library/Preferences/com.apple.screensaver.plist | sed 's/\..*//')

if [[ ${CHOSEN_TIME} != 0 ]]; then
    if [[ ${CHOSEN_TIME} -ge 60 ]]; then
        CONVERT_TIME=$(expr ${CHOSEN_TIME} / 60)    
    elif [[ ${CHOSEN_TIME} -lt 60 ]]; then
        CONVERT_TIME="${CHOSEN_TIME}"
    fi
fi

if [[ ${ELAPSED_TIME} -lt ${CONVERT_TIME} ]]; then
    /System/Library/CoreServices/Menu\ Extras/User.menu/Contents/Resources/CGSession -suspend   
fi

0 votes

Merci pour la réponse rapide, j'ai juste fait un test rapide de l'option ps y grep des commandes, rien n'est apparu. Peut-être que la minuterie de 4 heures qui verrouille mon compte n'est pas contrôlée par ScreenSaverEngine.app ?

0 votes

@newenglander J'ai fait une modification rapide pour m'assurer que le script fonctionnera également si le temps défini est inférieur à 1 min. Comme pour la commande ps, un résultat n'apparaîtra que si l'économiseur d'écran est utilisé :-) Pour tester cela, vous devrez soit exécuter le script dans votre démon, soit utiliser une machine distante.

0 votes

@newenglander Vous devrez probablement modifier l'adresse de l'ordinateur. USER_PATH . :-)

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