1 votes

AppleScript au démarrage et à un moment précis

J'essaie d'exécuter un AppleScript de démarrage, et un AppleScript qui s'exécute à une heure donnée (je déteste l'approche automate / calendrier).

on idle

    set currentTime to current date
    if the weekday of currentTime is (need to do for Tuesday to Saturday) then
        do shell script "kextunload /System/Library/Extensions/AppleHDA.kext " password "..." with administrator privileges

    end if

    --only check once a day
    return 24 * 60 * 60
end idle

le seul problème avec cette approche est le script il tourne tout le temps, utilisant la mémoire et aussi je ne suis pas encore sûr de savoir comment calculer le temps correct. (24.60.60, c'est tous les 00:00, n'est-ce pas ?) Je voudrais l'exécuter à 5 heures du matin.

si je comprends bien, ajouter le script.scpt à /Library/LaunchDaemons fera en sorte que le script s'exécute tout le temps même si l'utilisateur est déconnecté, ou se connecte avec l'économiseur d'écran activé n'est-ce pas ?

J'ai lu un article sur une autre approche qui semble encore meilleure, qui consiste à utiliser un Plist pour lancer un script à un moment donné.

PS : est-ce que tout cela fonctionnerait si le disque est crypté ? et puis-je utiliser AppleScript pour connecter un utilisateur au démarrage avec l'écran éteint (ou discrètement) afin de pouvoir ouvrir certaines applications sans avoir de problèmes de sécurité.

Puis-je avoir votre aide et vos conseils pour savoir quelle est la meilleure approche ? Merci d'avance.

1voto

Alex Points 8703

Vous pouvez lancer une commande au démarrage avec un plist launchd ressemblant à ceci, dans /Library/LaunchDaemons

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>NameYourTask</string>
    <key>ProgramArguments</key>
    <array>
    <string>CommandToRun</string>
    </array>
</dict>
</plist>

Pour une exécution à une heure définie, utilisez quelque chose comme ceci (cette exécution a lieu le lundi à 1 heure du matin) :

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
    <dict>
        <key>Label</key>
        <string>JobName</string>
        <key>ProgramArguments</key>
        <array>
            <string>CommandToRun</string>
        </array>
        <key>StartCalendarInterval</key>
        <dict>
            <key>Hour</key>
            <integer>1</integer>
            <key>Minute</key>
            <integer>0</integer>
            <key>Weekday</key>
            <integer>1</integer>
        </dict>
        <key>StandardOutPath</key>
            <string>LogFilePath</string>
        <key>StandardErrorPath</key>
            <string>LogFilePath</string>
    </dict>
</plist>

LaunchD dispose d'un grand nombre d'options concernant le mode d'exécution des tâches - il peut surveiller et maintenir les processus en cours, s'exécuter lorsque des réseaux ou des fichiers sont présents, etc.

Il semble que vous deviez définir vos besoins, puis déterminer comment mettre en œuvre les emplois.

Pas en dessous, la chaîne de commande est une seule chaîne. Si vous voulez passer des arguments, vous pouvez le faire, avec plusieurs balises de chaîne.

<array>
    <string>Command</string>
    <string>Arg1</string>
    <string>Arg2</string>
    <string>Arg3</string>
    <string>Arg4</string>
</array>

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