Как запустить Applescript при монтировании диска

11

Я хочу запустить Applescript при подключении определенного диска. Нет, если скрипт находится на диске или нет, он должен просто запускаться, когда OS X монтирует диск.

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

Разъяснение:

  1. Я возвращаюсь домой с моим Macbook
  2. Я подключаю USB-концентратор к устройству
  3. Внешние диски монтируются в OS X
  4. Мой Applescript запускается, делает что-то на этих дисках

Я хочу автоматизировать шаг 4.

jsadfeew
источник

Ответы:

4

Вы не упоминаете, в каком контексте вы монтируете диск, но как насчет того, чтобы пойти другим путем и монтировать диск с помощью Applescript?

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

ОБНОВЛЕНИЕ: Немного поиска нашел похожий вопрос в другом месте. По сути, для этого можно создать сценарий, применив сценарий в качестве действия папки к / Volumes:

on adding folder items to this_folder after receiving these_items
    repeat with aItem in these_items
        tell application "Finder"
            if (local volume of aItem) and (name of aItem is "[Name of Hard Drive]") then
                -- do something with the drive
                -- eject aItem
            end if
        end tell
    end repeat
end adding folder items to
Филип Реган
источник
Я не хочу монтировать диск с AS, я хочу запускать AS, когда диск монтируется. Я отредактирую свой пост, чтобы сделать его более понятным.
jsadfeew
Я понял вопрос, но не думаю, что это можно сделать очень легко. Я, однако, немного потрудился и нашел кое-что, что должно сработать, чтобы удовлетворить ваши потребности.
Филип Риган,
Я сделал несколько небольших изменений в сценарии. Работает нормально :)
jsadfeew
12

Вероятно, наиболее надежным решением является создание launchdзадания со StartOnMountсвойством, установленным в -boolean YES:

StartOnMount <boolean>
Этот необязательный ключ запускает задание каждый раз при монтировании файловой системы.

Вот как это делает Машина времени (см. /System/Library/LaunchDaemons/com.apple.backupd-attach.plist).

Даниэль Бек
источник
Я чувствую, что это самое надежное решение, поскольку оно зависит только от launchd, в котором должным образом находятся «подобные вещи».
Мэтт
2

Используйте действие Finder FolderAction, которое контролирует / Volume. Когда появляется новая папка, это означает, что новый диск был прикреплен. Теперь ваша папка FolderAction может выполнить действие Automator, AppleScript или сценарий оболочки, чтобы выполнить свою задачу.


источник
1

MarcoPolo может выполнять действия, основанные на прикреплении диска.


источник
Это приложение со скидкой, на данный момент следует использовать обслуживаемый форк: controlplaneapp.com
Даниил Пронин
0

Решением было бы создать приложение Automator, объединяющее 3 следующих действия:

  • Получить указанные элементы Finder
  • Смонтировать образ диска
  • Запустите AppleScript
kraymer
источник
1
Опять же, я не хочу монтировать образ или диск с помощью Applescript, я хочу запустить скрипт, когда диск монтируется. Я не могу найти способ сделать это с твоими шагами.
jsadfeew
Да, я вижу после разъяснения, что это не работает, потому что это жесткий диск, который вы монтируете (а не образ диска).
Краймер
Поскольку ваш ответ касается другого вопроса, а не того, что задается, вам следует рассмотреть возможность его удаления.
DanielSmedegaardBuus