AppleScript all'avvio e all'ora specifica

1

Sto provando a eseguire un AppleScript di avvio e un AppleScript che vengono eseguiti in un determinato momento (odio l'approccio di automator / calendario)

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

l'unico problema con questo approccio è lo script che è in esecuzione tutto il tempo, utilizzando la memoria e anche io non sono sicuro di come calcolare l'ora corretta ancora. (24.60.60 è ogni 00:00 giusto?) Mi piacerebbe eseguirlo alle 05:00

se ho capito bene, l'aggiunta di script.scpt in / Library / LaunchDaemons farà in modo che lo script funzioni sempre anche se l'utente è disconnesso o si registra con lo screensaver sulla destra?

Ho letto di un altro approccio con sembra ancora meglio, fondamentalmente usando un Plist per lanciare uno script ad un orario prestabilito.

PS: tutto questo funzionerebbe se il disco fosse crittografato? e posso usare AppleScript per registrare un utente all'avvio con lo schermo spento (o discretamente) così posso iniziare ad aprire alcune app senza problemi di sicurezza.

Posso avere il tuo aiuto e consigli su quale approccio è il migliore? Molte grazie in anticipo.

    
posta Kevin 11.03.2017 - 07:33
fonte

1 risposta

1

Puoi eseguire un comando all'avvio con un plist di avvio che assomigli a questo, in / 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>

Per essere eseguito in un momento definito, usa qualcosa di simile (questo viene eseguito lunedì, 1:00):

<?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 ha molte opzioni su come possono essere eseguiti i lavori - può guardare e mantenere processi in esecuzione, eseguire quando sono presenti reti o file, ecc.

Sembra che tu abbia bisogno di definire i tuoi requisiti, quindi capire come implementare i lavori.

Non sotto, la stringa di comando è una singola stringa. Se vuoi passare argomenti, puoi, con più tag di stringa.

<array>
    <string>Command</string>
    <string>Arg1</string>
    <string>Arg2</string>
    <string>Arg3</string>
    <string>Arg4</string>
</array>
    
risposta data 12.03.2017 - 07:34
fonte

Leggi altre domande sui tag