4 votes

Renvoyer le statut de SleepDisabled en Applescript

J'essaie de faire un Applescript pour activer ou non SleepDisabled (en utilisant pmset) en fonction de l'état de SleepDisabled.

Quelque chose comme :

set SuperSleep to do shell script "return status of SleepDisabled"
if SuperSleep is equal to "0" then
do shell script "sudo pmset -a disablesleep 1" user name "Myname" password "Mypassword" with administrator privileges
else
do shell script "sudo pmset -a disablesleep 0" user name "Myname" password "Mypassword" with administrator privileges

J'ai essayé de regarder dans man psmet ou en utilisant defaults read mais sans succès.

La seule chose à laquelle je pense est d'utiliser pmset -g pour montrer ce :

System-wide power settings:
 SleepDisabled      0
Currently in use:
 lidwake              1
 autopoweroff         1
 standbydelayhigh     86400
 autopoweroffdelay    28800
 standbydelaylow      10800
 standby              1
 proximitywake        0
 ttyskeepawake        1
 hibernatemode        3
 powernap             0
 gpuswitch            2
 hibernatefile        /var/vm/sleepimage
 highstandbythreshold 50
 displaysleep         2
 sleep                2 (sleep prevented by coreaudiod, coreaudiod)
 tcpkeepalive         1
 halfdim              1
 acwake               0
 disksleep            10

Et ensuite chercher l'état de SleepDisabled dans la liste, mais je ne sais pas comment retourner le "0" ou le "1" de SleepDisabled...

2voto

user3439894 Points 52496

Ce qui suit fonctionne pour moi :

set SuperSleep to (do shell script "pmset -g | awk '/SleepDisabled/{print $2}'")

if SuperSleep is equal to "0" then
    do shell script "pmset -a disablesleep 1" with administrator privileges
else
    do shell script "pmset -a disablesleep 0" with administrator privileges
end if

NOTE : Ne pas utiliser sudo dans un do shell script commande Utilisez simplement with administrator privileges car c'est tout ce qu'il faut quand vous feriez normalement sudo sur Terminal ou un bash script . De plus, je n'inclurais pas le user name "Myname" y password "Mypassword" car il n'est pas crypté dans le fichier. Il suffit de le taper dans la boîte de dialogue affichée par la fonction administrator privileges option .

Notez également que SleepDisabled n'était pas présent dans la sortie de pmset -g quand j'ai essayé pour la première fois en Terminal et n'était pas présent jusqu'à ce que j'utilise la fonction sudp pmset -a disablesleep 0 commande de Terminal . Si c'est le cas sur votre système, vous devez ajuster les paramètres de l'interface utilisateur. code pour gérer cette situation. Vous pourriez utiliser un si (composé) déclaration de contrôle .


Note : Le ejemplo AppleScript code n'est que cela et ne contient pas de gestion des erreurs comme il se doit. Il incombe à l'utilisateur d'ajouter toute gestion d'erreur appropriée, nécessaire ou souhaitée. Jetez un coup d'œil au essayez déclaration y erreur déclaration dans le Guide du langage AppleScript . Voir aussi, Travailler avec des erreurs .

0 votes

''pmset -g | awk '/SleepDisabled/{print $2}' '' était en fait la ligne de commande que je cherchais, merci ! Je vais regarder la déclaration que vous suggérez, et utiliser ''avec des privilèges d'administrateur'' pour plus de sécurité ;)

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