2 votos

Cómo ejecutar AppleScript (.scpt) como LaucnDaemon por la root

Tengo un AppleScript o conjunto de Applescripts que estoy tratando de ejecutar como un LaunchDaemon. Yo no tengo ningún problema al ejecutar el LaunchDaemon con mi usuario. El problema viene cuando tengo la necesidad de leer un archivo que sólo es legible por la root, esto es por diseño, por razones de seguridad como el archivo contiene información confidencial.

He instalado el necesario precompilado AppleScript archivos, el .scpt archivos, en:

/Library/Scripts/myApplication/

He puesto mi plists en:

/Library/LaunchDaemons

Editar: Aquí está el plist para mi Demonio:

<?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 trato de cargar el plists utilizando launchctl y sudo

sudo launchctl load -w /Library/LaunchDaemons/com.mycompany.myapp.service.plist

Obtengo errores en la systemlog.registro:

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 me cae el "sudo" de la launchctl comando funciona perfectamente. Incluso he tratado de ejecutar las secuencias de comandos desde la terminal como usuario root, que también funciona bien. Sin embargo, tan pronto como intento cargar con launchctl y sudo todo muere.

Con el fin de obtener esta secuencia de comandos para ejecutar previamente tuve que dar a la aplicación que se ejecuta la secuencia de comandos de accesibilidad de los privilegios en la máquina, por lo que previamente Sublime Text 2, Terminal y Editor de secuencias de Comandos. Supongo que esto es lo que está causando que el script no se ejecuta, pero no sé que programa para habilitar en la accesibilidad, ya que yo no soy de los que se le pregunte. Así que ¿cómo puedo obtener este script para que se ejecute de la manera que yo necesito?

0voto

Steve Evans Puntos 155

Asumiendo que su launchd trabajo está ajustado correctamente, puede llegar a ser una limitación de AppleScript.

AppleScript Requiere una interfaz gráfica de usuario (Aqua Sesión)

Si su AppleScript se inicia utilizando launchd como un usuario root , no tiene una interfaz gráfica de usuario asociado. La mayoría de AppleScript requiere una interfaz gráfica de usuario para trabajar de forma constante. Dependiendo de la versión de OS X, es posible que funcione, pero no está diseñado para.

Procesos en OS X no puede trivialmente de la cruz entre las sesiones de usuario.

Do Shell Script

Una actuación más eficaz es separar la funcionalidad de la necesidad de mayores privilegios en un script de shell como bash, perl, ruby o python.

Su AppleScript puede llamar el script usando AppleScript del do shell script:

do shell script "command" user name "me" password "mypassword" with administrator privileges

Si usted necesita para evitar la incrustación de un nombre de usuario y la contraseña, esto es posible, pero más allá del alcance de esta pregunta.

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