
este é meu primeiro post neste site, então desculpe-me se for um post duplo, mas não consegui encontrar nada semelhante.
Estou no Macbook Pro 13 no início de 2011, instalei um ssd e movi o disco rígido para o optibay, fiz uma instalação limpa do Yosemite, meu segundo disco rígido é de 1 TB onde armazeno meu trabalho e dados antes de fazer um backup quando eu ' estou em casa.
Não preciso que o disco rígido fique montado o tempo todo e preciso economizar energia e mantê-lo oculto, então removi-o da pesquisa do Spotlight, fiz "sudo pmset -a disksleep 1" e criei dois applescript, um para ser iniciado no login para desmontar diretamente o disco rígido e o segundo é iniciado através da chave de ejeção que modifiquei com mosquetão (anteriormente conhecido como KeyRemap4MacBook)
O segundo script abre uma caixa de diálogo que pede uma senha e pergunta se eu gostaria de acessar o disco rígido, se sim, o disco rígido será montado, se não, será desmontado
O problema é que percebi que, se eu desligar meu macbook enquanto o disco rígido estiver montado, o identificador do disco muda para o disco rígido muda de disco2 para disco1 e ambos os scripts tentarão desmontar o SSD, então preciso ejetar manualmente o HDD e reinicie para que tudo volte ao normal.
O que eu quero fazer é modificar o script que é iniciado através da tecla de ejeção para que ele abra uma primeira caixa de diálogo, exatamente como a caixa de diálogo de desligamento, removendo o botão cancelar e adicionando um botão chamado "Expansão" (que é o nome de o disco rígido).
Sou um novato no applescript, então aqui está o que quero fazer: Exemplo
Se Reiniciar for pressionado, desmonte o disco rígido e reinicie
Se Suspender for pressionado, desmonte o disco rígido e suspenda
Se desligar for pressionado, desmonte o disco rígido e desligue
Se Expansão for pressionado, inicie o script antigo
Aqui está meu script antigo, o novo script deve vir um pouco antes dele
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
Obrigado pela sua ajuda e desculpe se TLDR: p
Responder1
Então, depois de 3 horas pesquisando e tentando, encontrei uma solução.
Montar e desmontar o disco rígido com "diskutil mountDisk disk2" e "hdiutil eject disk2" foi uma MÁ IDEIA, porque descobri que o identificador do disco continua mudando aleatoriamente, não importa se o disco rígido foi desmontado ou não no último desligamento, então o script Eu estava tentando adicionar foi inútil.
A solução que encontrei foi obviamente o UUID, no início não consegui fazer funcionar corretamente mas depois de várias tentativas tudo funciona bem.
Como: Inicie o Utilitário de Disco, à esquerda você verá cada disco com suas partições Selecione a partição para a qual deseja criar o script e clique em Informações no canto superior esquerdo, uma janela de informações aparecerá, certifique-se de que é a partição correta , na lista de informações, você encontrará ( Universal Unique Identifier : Bunch-of-letters-and-numbers-here ) Esse é o UUID
Meu roteiro 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
O comando Try serve para evitar mostrar mensagem se o disco já estiver desmontado.
É isso, simples e preciso, espero que ajude no futuro