ディスクマウントでApplescriptを実行する方法


11

特定のディスクをマウントするときにApplescriptを実行したい。スクリプトがディスク上にあるかどうかに関係なく、OS Xがディスクをマウントしたときに実行する必要があります。

フォルダーアクションでこれを実現しようとしましたが、この方法では実行できないようです。

明確化:

  1. Macbookを持って家に帰る
  2. USBハブをデバイスに接続します
  3. 外付けディスクはOS Xにマウントされています
  4. 私のApplescriptが実行され、それらのディスクでいくつかのことを行います

ステップ4を自動化したい。


回答:


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

質問は理解しましたが、これを簡単に行うことは不可能だと思います。しかし、私は少し手を加えてみましたが、あなたのニーズを満たすために少し調整することでうまくいくはずのものを見つけました。
Philip Regan

スクリプトにいくつかの小さな変更を加えました。
正常に動作し

12

おそらく最も堅牢なソリューションはlaunchdStartOnMountプロパティを次のように設定してジョブを作成すること-boolean YESです。

StartOnMount <boolean>
このオプションのキーにより、ファイルシステムがマウントされるたびにジョブが開始されます。

これがTime Machineのやり方です(を参照/System/Library/LaunchDaemons/com.apple.backupd-attach.plist)。


「この種のもの」が適切に存在するlaunchdにのみ依存しているため、これが最も堅牢なソリューションであると感じています。
Matt

2

/ Volumesを監視するFinder FolderActionを使用します。新しいフォルダが表示されたら、新しいディスクが接続されています。これで、FolderActionはAutomatorアクション、AppleScript、またはシェルスクリプトを実行して作業を行うことができます。



0

解決策は、次の3つのアクションをチェーンするAutomatorアプリケーションを作成することです。

  • 指定されたファインダーアイテムを取得する
  • ディスクイメージのマウント
  • AppleScriptを実行する

1
繰り返しますが、イメージやディスクをApplescriptでマウントしたくないので、ディスクがマウントされたときにスクリプトを実行したいと思います。私はあなたのステップでそれを達成する方法を見つけることができません。
jsadfeew

はい、わかりましたが、マウントしているハードドライブ(イメージディスクではない)が原因で機能しないことを確認しました。
クレイマー

回答は質問されたものとは異なる質問に対応しているため、削除することを検討してください。
DanielSmedegaardBuus

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.