Похожие вопросы

AppleScript для монтирования и размонтирования дисков

Это мой первый пост на этом сайте, поэтому извините, если это дабл пост, но я не мог найти ничего подобного.

Я на Macbook Pro 13 в начале 2011 года, я установил ssd и переместил жесткий диск в optibay, сделал чистую установку Yosemite, мой второй жесткий диск-1 ТБ, где я храню свою работу и данные, прежде чем делать резервную копию, когда я дома.

мне не нужно hdd быть установленным все время и мне нужно сохранить энергию и сдержать ее спрятанный, поэтому я извлек его от фары поиск, сделал "команду sudo pmset -в disksleep 1" и создали два помощью AppleScript, один будет запущен при входе в систему напрямую отключить HDD и вторая запускается через клавишу "извлечь", что я изменил с карабина (ранее известный как KeyRemap4MacBook)

второй сценарий запускает диалог, который запрашивает пароль, затем спрашивает, хочу ли я получить доступ к жесткому диску, если да, жесткий диск будет смонтирован, если нет, он будет размонтирован

проблема в том, что я заметил, что если я выключил мой macbook в то время как жесткий диск смонтирован, идентификатор диска изменяется для hdd изменяется с disk2 на disk1, и оба сценария будут пытаться размонтировать ssd, поэтому мне нужно вручную извлечь жесткий диск и перезапустить, чтобы все вернулось в нормальное состояние.

что я хочу сделать, так это изменить скрипт, который запускается с помощью ключа извлечения, чтобы он запустил первый диалог, точно так же, как диалог завершения работы,
удаление кнопки отмены и добавление кнопки под названием "расширение" (это название жесткого диска).

Я новичок с applescript, поэтому вот что я хочу сделать :
пример

если перезагрузка нажата, то отключите жесткий диск и перезагрузите


Если сон будет нажата, затем отключите HDD и спать


Если shutdown нажата, то размонтировать жесткий диск и shutdown


Если расширение нажато, то запускаем старый скрипт

вот мой старый скрипт, новый скрипт должен прийти как раз перед это

     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 }' | 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

Спасибо за помощь, и извините, если TLDR: p

5
задан Tetsujin
источник

1 ответов

Итак, после 3 часов погуглив, я нашел решение.

подключение и отключение HDD с "diskutil mountDisk диск2" и "hdiutil извлечь диск2" было плохой идеей, потому что я понял, что диск идентификатор меняется случайным образом, независимо от того, если жесткий диск был отмонтирован или нет в последнем завершении работы компьютера, поэтому сценарий я пытался добавить было бесполезно.

решение, которое я нашел, было очевидно UUID, в начале я не мог заставить его работать правильно, но после нескольких попыток, все работает нормально.

Как: Запускаем Дисковую утилиту, слева вы увидите каждый диск со своими разделами Выберите раздел, для которого вы хотите создать скрипт, и clic Info в левом верхнем углу появится информационное окно, убедитесь, что это правильный раздел, в списке info вы найдете (универсальный уникальный идентификатор: куча букв и цифр здесь ) Это UUID

мой последний скрипт :

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

команда Try чтобы не показывать сообщение, если диск уже отмонтирован.

вот так, просто и точно, надеюсь, это поможет в будущем

2
отвечен Ait Zmerli Mohamed 2015-10-10 22:10:39
источник

Другие вопросы applescript hard-drive macos shutdown ssd