3 votos

¿Cómo puedo ejecutar un shell script con privilegios de administrador desde Applescript?

Estoy escribiendo un Applescript que pretende automatizar la instalación (añadir al llavero Root) y la configuración de 'Always Trust' simplemente lanzando el Applescript. Estoy atascado en cómo hacer que el usuario administrador se autentifique con la ventana emergente de autenticación

Aquí está mi código hasta ahora:

try
    set question to display dialog "To Install Click 'Continue'" & return & "You will be prompted to enter an administartor password!" buttons {"Close", "Continue"} default button 2
    set answer to button returned of question
    if answer is equal to "Continue" then
        do shell script ("sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain ~/Desktop/MyWiFiCertificate.crt")
    else if answer is equal to "Close" then
        display dialog "You have cancelled the WiFi Certificate installation." buttons {"Exit"} default button 1
    end if
on error errorMsg
    display dialog errorMsg
end try

Sin embargo, tengo este error

sudo: no tty present and no askpass program specified".

Supongo que se debe al hecho de que la operación no puede ser autenticada por el usuario administrador. Agradecería que cualquiera que haya automatizado este proceso antes pudiera refinar mi código para permitir al usuario autenticarse y automáticamente 'Confiar siempre' en el certificado WiFi.

0 votos

Las respuestas a apple.stackexchange.com/questions/156544/ puede ayudar aquí.

2voto

siva Puntos 23

Puedes pasar los privilegios de administrador a una línea de AppleScript que requiera privilegios de administrador añadiendo "con privilegios de administrador":

do shell script "security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain ~/Desktop/MyWiFiCertificate.crt" with administrator privileges

0 votos

Es sudo ¿Sigue siendo necesario entonces?

0 votos

@patrix Sí, aunque nunca se ha investigado por qué. Supongo que es algo que podría investigar y añadir a esta respuesta.

0 votos

@grgarside Eso parece haberme solucionado, ahora me sale el aviso de autenticación y mirando el Llavero está puesto en 'Siempre confiar' tal y como quería. Pero no veo en qué parte del comando se define 'Always Trust'?

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