
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.