AppleScript para montar y desmontar unidades

AppleScript para montar y desmontar unidades

Esta es mi primera publicación en este sitio, así que discúlpenme si es una publicación doble pero no pude encontrar nada similar.

Estoy en Macbook Pro 13 a principios de 2011, instalé un SSD y moví el disco duro al optibay, hice una instalación limpia de Yosemite, mi segundo disco duro es de 1 TB donde almaceno mi trabajo y mis datos antes de hacer una copia de seguridad cuando Estoy en casa.

No necesito que el disco duro esté montado en todo momento y necesito ahorrar energía y mantenerlo oculto, así que lo eliminé de la búsqueda destacada, hice "sudo pmset -a disksleep 1" y creé dos Applescript, uno para iniciar al iniciar sesión para desmontar directamente el disco duro y el segundo se inicia mediante la tecla de expulsión que modifiqué con mosquetón (anteriormente conocido como KeyRemap4MacBook)

El segundo script inicia un cuadro de diálogo que solicita una contraseña y luego me pregunta si deseo acceder al disco duro. En caso afirmativo, el disco duro se montará; si no, se desmontará.

El problema es que me di cuenta de que si apago mi macbook mientras el disco duro está montado, el identificador del disco cambia del disco2 al disco1 y ambos scripts intentarán desmontar el ssd, por lo que necesito expulsar manualmente el hdd y reinicia para que todo vuelva a la normalidad.

Lo que quiero hacer es modificar el script que se inicia mediante la tecla de expulsión para que inicie un primer cuadro de diálogo, exactamente como el cuadro de diálogo de cierre, eliminando el botón cancelar y agregando un botón llamado "Expansión" (que es el nombre de el disco duro).

Soy un novato con AppleScript, así que esto es lo que quiero hacer: Ejemplo

Si se presiona Reiniciar, desmonte el disco duro y reinícielo
. Si se presiona Suspender, desmonte el disco duro y suspenda.
Si se presiona Apagar, desmonte el disco duro y apáguelo.
Si se presiona Expansión, inicie el script anterior.

Aquí está mi guión antiguo, el nuevo guión debería aparecer justo antes.

     set my_password to display dialog ¬
    "Allow access to Expansion" with title ¬
    "Expansion" with icon caution ¬
    default answer ¬
    "" buttons {"Cancel", "OK"} default button 2 ¬
    giving up after 295 ¬
    with hidden answer
if text returned of my_password is "password here" then

    set answer to the button returned of (display dialog "Allow access to Expansion?" with icon caution buttons {"Yes", "No"})

    if answer = "Yes" then
        do shell script "diskutil mountDisk disk2"
        tell application "Notifications Scripting"


            display notification "Expansion" subtitle "is now mounted" sound name "Blow"

        end tell
    else if answer = "No" then
        try

            do shell script "hdiutil eject disk2"

        on error

            tell application "System Events"
                set termOpen to count (processes whose name is "Terminal")
                set amOpen to count (processes whose name is "Activity Monitor")
            end tell


            tell application "Terminal"
                activate
                set newTab to do script "lsof /Volumes/'HFS HD'"
            end tell

            tell application "Activity Monitor"
                activate
            end tell

            delay 3

            set question to display dialog "Kill running?" buttons {"Yes", "No"} default button 2
            set answer to button returned of question

            if answer is equal to "Yes" then
                do shell script "lsof -P | grep '/Volumes/HFS HD'  | awk '{print $2}' | xargs kill -9"
                do shell script "hdiutil eject disk2"
            end if


            tell application "Activity Monitor"
                if amOpen is 0 then
                    quit
                end if
            end tell

            tell application "Terminal"
                if termOpen is 0 then
                    quit
                else
                    close (first window whose selected tab is newTab) saving no
                end if
            end tell



        end try
        tell application "Notifications Scripting"


            display notification "Expansion" subtitle "is now unmounted" sound name "Blow"

        end tell
    end if
else
    tell application "Notifications Scripting"


        display notification "A Goomba killed Mario!" subtitle "Next time, try jumping on it" sound name "Sosumi"

    end tell
    quit

end if

Gracias por tu ayuda y lo siento si TLDR :p

Respuesta1

Entonces, después de 3 horas de buscar en Google y probar, encontré una solución.

Montar y desmontar el disco duro con "diskutil mountDisk disk2" y "hdiutil eject disk2" fue una MALA IDEA, porque descubrí que el identificador del disco sigue cambiando aleatoriamente sin importar si el disco duro se desmontó o no en el último apagado, por lo que el script Estaba tratando de agregar fue inútil.

La solución que encontré fue obviamente el UUID, al principio no pude hacerlo funcionar correctamente pero después de varios intentos, todo funciona bien.

Cómo: Inicie la Utilidad de Discos, a la izquierda verá cada disco con sus particiones. Seleccione la partición para la que desea crear el script y haga clic en Información en la parte superior izquierda; aparecerá una ventana de información; asegúrese de que sea la partición correcta. , en la lista de información, encontrará (Identificador único universal: grupo-de-letras-y-números-aquí) Ese es el UUID

Mi guión final:

set answer to the button returned of (display dialog “Mount the second HDD?” with icon caution buttons {"Yes", "No"})

if answer = "Yes" then
    do shell script "diskutil mount *YOUR UUID WITHOUT THE ASTERISK* ”

else if answer = "No" then
    try

        do shell script "diskutil unmount *YOUR UUID WITHOUT THE ASTERISK*"

    end try
end if

El comando Try es para evitar mostrar un mensaje si el disco ya está desmontado.

Eso es todo, simple y preciso. Espero que esto ayude en el futuro.

información relacionada