1 votos

AppleScript en el inicio y en un momento determinado

Estoy tratando de ejecutar un AppleScript de inicio, y un AppleScript que se ejecuta a una hora determinada (Odio el enfoque de 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

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

si lo entiendo bien, añadir el script.scpt a /Library/LaunchDaemons hará que el scriptse ejecute todo el tiempo aunque el usuario esté desconectado, o iniciando sesión con el salvapantallas activado ¿no?

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

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

¿Me pueden ayudar y aconsejar sobre qué enfoque es el mejor? Muchas gracias de antemano.

0 votos

¿Existe una necesidad específica de utilizar AppleScript en este caso? Ejecutando kextunload en fechas/horas específicas puede hacerse a través de launchd (o cron ) directamente.

0 votos

Gracias, voy a leer sobre esto, básicamente quiero ejecutar algún comando de terminal con el salvapantallas activado (apagar el altavoz interno, purgar la memoria, abrir alguna aplicación (que no creo que pueda funcionar con el salvapantallas activado)

0 votos

Es una gran diferencia en cuanto al enfoque si quieres ejecutar algunos comandos que normalmente ejecutas en Terminal (por ejemplo kextunload ) o si desea ejecutar algunas aplicaciones. Probablemente obtendrás mejores respuestas si editas tu pregunta para exponer claramente tu intención, sin hacer ya suposiciones sobre las posibles soluciones y sus inconvenientes.

1voto

geocoin Puntos 121

Puedes ejecutar un comando en el arranque con un plist de launchd con el siguiente aspecto, 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 que se ejecute a una hora definida, utilice algo como esto (esto se ejecuta el lunes, a la 1 de la madrugada):

<?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 en cuanto a cómo pueden ejecutarse los trabajos - puede vigilar y mantener procesos en marcha, ejecutar cuando hay redes o archivos, etc.

Parece que tienes que definir tus requisitos y luego pensar en cómo implementar los trabajos.

No abajo, la cadena de comandos es una sola cadena. Si quieres pasar argumentos, puedes, con múltiples etiquetas de cadena.

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

0 votos

Gracias, voy a probar esto que parece ser mucho mejor que mi actual script.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X