1 votos

Cambiar un disco de inicio usando AppleScript

He intentado usar AppleScript para cambiar mi disco de inicio para Boot Camp y Mac. Anteriormente he intentado usar el terminal (do shell script) pero parece que esa opción requiere que introduzca una contraseña administrativa.

Así que:

  1. ¿Cómo hago para poder recuperar la contraseña? Puedo usar llaveros.
  2. Cómo programar el AppleScript/usar el Terminal a través de AppleScript a:
    • ir a Preferencias del Sistema/lanzamiento si no está ya abierto
    • ir al panel de preferencias del Disco de Inicio
    • poner el disco de arranque en Windows/Mac y tener la opción de apagar/reiniciar. (Me gustaría ser capaz de tener un solo script para manejar todo, incluso si estoy reiniciando en MacOS, o apagar y usar Windows más tarde, etc.)

Gracias de antemano. (P.D. He intentado buscar algunas respuestas y hay una muy buena respuesta aquí en StackOverflow pero no parece funcionar en Sierra. También las otras respuestas que he encontrado en SO y Ask Different no funcionan).

Los dos conjuntos de código que probé (el primero usando Preferencias del Sistema, el segundo usando Terminal, ambos usando AppleScript):

display dialog "Select a startup disk" buttons ¬
    {"BOOTCAMP", "Macintosh HD"}
if button returned of the result = "BOOTCAMP" then
set bootVol to "BOOTCAMP" as text
else if button returned of the result = "Macintosh HD" then
    set bootVol to "Macintosh HD" as text
end if

do shell script "security 2>&1 >/dev/null find-generic-password -gl \"Insert Password Here\" | awk '{print $2}'"
set myPass to (text 2 thru -2 of result) as text

do shell script "bless -mount \"/Volumes/" & bootVol & ¬
    "\" -setBoot" user name "username" password myPass with administrator privileges

do shell script "shutdown -r now" user name "username" password myPass with administrator privileges

(Insertar contraseña aquí se refiere a la clave genérica. Lo que he encontrado:

  • al ejecutar el comando en terminal sin barras invertidas el comando funciona y me da la contraseña asignada incluyendo las comillas así "Password"

tell application "System Preferences"
    activate
    set the current pane to pane id "com.apple.preference.startupdisk"
    get the name of every anchor of pane id "com.apple.preference.startupdisk"
end tell

try
    tell application "System Events" to tell process "System Preferences" to click button "BOOTCAMP Windows" of radio group 1 of scroll area 1 of group 1 of splitter group 1 of window 1
end try

try
    tell application "System Events" to tell process "System Preferences" to click button "Restart..."
end try

Necesito poder desbloquear las Preferencias del Sistema, preferiblemente utilizando la misma contraseña del llavero que he mencionado en el primer script. El segundo comando tell application "System Events" to tell process "System Preferences" to click button "Restart..." no funciona.

1voto

klanomath Puntos 19587

En mi entorno el script funciona como se espera. Sin embargo, he utilizado un nombre diferente para la clave genérica: boot_key

Los atributos de boot_key:

enter image description here enter image description here

La contraseña es evidentemente también la contraseña de acceso de klanomath. seguridad ¡siempre puede usar la llave!


Para depurar el Apple script habilite "Mostrar registro" con cmd3

El script:

display dialog "Select a startup disk" buttons ¬
    {"BOOTCAMP", "Macintosh HD"}
if button returned of the result = "BOOTCAMP" then
    set bootVol to "BOOTCAMP" as text
else if button returned of the result = "Macintosh HD" then
    set bootVol to "Macintosh HD" as text
end if

do shell script "security 2>&1 >/dev/null find-generic-password -gl \"boot_key\" | awk '{print $2}'"
set myPass to (text 2 thru -2 of result) as text

do shell script "bless -mount \"/Volumes/" & bootVol & ¬
    "\" -setBoot" user name "klanomath" password myPass with administrator privileges

do shell script "echo \"shutdown -r now\"" user name "klanomath" password myPass with administrator privileges

se revelará entonces - después de elegir "Macintosh HD" - en la parte de "Respuestas":

tell application "Script Editor"
    display dialog "Select a startup disk" buttons {"BOOTCAMP", "Macintosh HD"}
        --> {button returned:"Macintosh HD"}
end tell
tell current application
    do shell script "security 2>&1 >/dev/null find-generic-password -gl \"boot_key\" | awk '{print $2}'"
        --> "\"Passw0rd\""
    do shell script "bless -mount \"/Volumes/Macintosh HD\" -setBoot" user name "klanomath" password "Passw0rd" with administrator privileges
        --> ""
    do shell script "echo \"shutdown -r now\"" user name "klanomath" password "Passw0rd" with administrator privileges
        --> "shutdown -r now"
end tell
Result:
"shutdown -r now"

Puede registrar varias variables explícitamente añadiendo log $variable líneas (que es redundante con las "Respuestas" en algunos casos):

display dialog "Select a startup disk" buttons ¬
    {"BOOTCAMP", "Macintosh HD"}
if button returned of the result = "BOOTCAMP" then
    set bootVol to "BOOTCAMP" as text
else if button returned of the result = "Macintosh HD" then
    set bootVol to "Macintosh HD" as text
end if
log bootVol

do shell script "security 2>&1 >/dev/null find-generic-password -gl \"boot_key\" | awk '{print $2}'"
set myPass to (text 2 thru -2 of result) as text
log myPass

do shell script "bless -mount \"/Volumes/" & bootVol & ¬
    "\" -setBoot" user name "klanomath" password myPass with administrator privileges
log bootVol
log myPass

do shell script "echo \"shutdown -r now\"" user name "klanomath" password myPass with administrator privileges
log myPass

que luego revela:

tell application "Script Editor"
    display dialog "Select a startup disk" buttons {"BOOTCAMP", "Macintosh HD"}
        --> {button returned:"Macintosh HD"}
end tell
(*Macintosh HD*)
tell current application
    do shell script "security 2>&1 >/dev/null find-generic-password -gl \"boot_key\" | awk '{print $2}'"
        --> "\"Passw0rd\""
    (*Passw0rd*)
    do shell script "bless -mount \"/Volumes/Macintosh HD\" -setBoot" user name "klanomath" password "Passw0rd" with administrator privileges
        --> ""
    (*Macintosh HD*)
    (*Passw0rd*)
    do shell script "echo \"shutdown -r now\"" user name "klanomath" password "Passw0rd" with administrator privileges
        --> "shutdown -r now"
    (*Passw0rd*)
end tell

o como captura de pantalla:

enter image description here

Ahora deberías poder detectar el error en tu script o en tu entorno.

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