AppleScript al inicio y en un momento específico

1

Estoy intentando ejecutar un AppleScript de inicio y un AppleScript que se ejecute a una hora determinada (odio el enfoque del automatizador / 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

el único problema con este enfoque es la secuencia de comandos que se ejecuta todo el tiempo, usando la memoria y aún no estoy seguro de cómo calcular la hora correcta. (24.60.60 es cada 00:00 ¿verdad?) Me gustaría ejecutarlo a las 05 AM

si lo entiendo bien, agregar el script.scpt a / Library / LaunchDaemons hará que el script se ejecute todo el tiempo, incluso si el usuario está desconectado, o se registra con el protector de pantalla a la derecha?

He leído acerca de otro enfoque que parece incluso mejor, básicamente usando un Plist para lanzar un script a una hora determinada.

PS: ¿todo esto funcionaría si el disco está cifrado? y puedo usar AppleScript para registrar a un usuario en el arranque con la pantalla apagada (o de manera discreta) para poder abrir algunas aplicaciones sin tener problemas de seguridad.

¿Puedo obtener su ayuda y consejos sobre cuál es el mejor enfoque? Muchas gracias de antemano.

    
pregunta Kevin 11.03.2017 - 07:33

1 respuesta

1

Puede ejecutar un comando en el inicio con una lista de launchd buscando algo como esto, en / 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>

Para ejecutar en un tiempo definido, use algo como esto (esto se ejecuta el lunes, 1 am):

<?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 tiene muchas opciones sobre cómo se pueden ejecutar los trabajos: puede ver y mantener los procesos en ejecución, cuando hay redes o archivos presentes, etc.

Parece que necesita definir sus requisitos y luego averiguar cómo implementar los trabajos.

No debajo, la cadena de comando es una sola cadena. Si desea pasar argumentos, puede, con múltiples etiquetas de cadena.

<array>
    <string>Command</string>
    <string>Arg1</string>
    <string>Arg2</string>
    <string>Arg3</string>
    <string>Arg4</string>
</array>
    
respondido por el Alex 12.03.2017 - 07:34

Lea otras preguntas en las etiquetas