Tengo un AppleScript o un conjunto de Applescripts que estoy intentando ejecutar como LaunchDaemon. No tengo ningún problema para ejecutar LaunchDaemon con mi usuario. El problema surge cuando tengo la necesidad de leer un archivo que solo se puede leer por root, esto es por diseño por razones de seguridad ya que el archivo contiene información confidencial.
He instalado los archivos de AppleScript precompilados necesarios, los archivos .scpt, en:
/Library/Scripts/myApplication/
He puesto mis plistas en:
/Library/LaunchDaemons
Editar: Aquí está la lista para mi Daemon:
<?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>com.mycompany.myapp.service</string>
<key>KeepAlive</key>
<true/>
<key>RunAtLoad</key>
<true/>
<key>ProgramArguments</key>
<array>
<string>/usr/bin/osascript</string>
<string>/Library/Scripts/myApp/myApp.scpt</string>
</array>
</dict>
Ahora, cuando intento cargar las listas usando launchctl y sudo
sudo launchctl load -w /Library/LaunchDaemons/com.mycompany.myapp.service.plist
Recibo errores en systemlog.log:
Aug 26 17:54:13 computername com.apple.xpc.launchd[1] (com.mycompany.myapp.service[74757]): Service exited with abnormal code: 1
Aug 26 17:54:13 computername com.apple.xpc.launchd[1] (com.mycompany.myapp.service): Service only ran for 0 seconds. Pushing respawn out by 10 seconds.
Sin embargo, si suelto el "sudo" del comando launchctl, funciona perfectamente. Incluso he intentado ejecutar los scripts desde el terminal como usuario root, lo que también funciona bien. Sin embargo, tan pronto como intente cargarlos con launchctl y sudo, todo muere.
Para que esta secuencia de comandos se ejecutara previamente, tuve que otorgarle a la aplicación que ejecuta los privilegios de accesibilidad de la secuencia de comandos en la máquina, por lo que anteriormente, Sublime Text 2, Terminal y Script Editor. Supongo que esto es lo que hace que el script no se ejecute, pero no sé qué programa habilitar con accesibilidad, ya que no se me solicita. Entonces, ¿cómo puedo hacer que este script se ejecute de la forma en que lo necesito?