So führen Sie Applescript auf dem Festplatten-Mount aus

11

Ich möchte ein Applescript ausführen, wenn ich eine bestimmte Festplatte einbinde. Es ist nicht so, ob sich das Skript auf der Festplatte befindet oder nicht, es sollte nur ausgeführt werden, wenn OS X die Festplatte bereitstellt.

Ich habe versucht, dies mit Ordneraktionen zu erreichen, aber es sieht so aus, als ob dies nicht möglich ist.

Klärung:

  1. Ich komme mit meinem Macbook nach Hause
  2. Ich schließe meinen USB-Hub an das Gerät an
  3. Externe Festplatten werden in OS X bereitgestellt
  4. Mein Applescript wird ausgeführt und erledigt einige Aufgaben auf diesen Datenträgern

Ich möchte Schritt 4 automatisieren.

jsadfeew
quelle

Antworten:

4

Sie erwähnen nicht, in welchem ​​Kontext Sie die Festplatte bereitstellen, aber wie wäre es, wenn Sie in die andere Richtung gehen und die Festplatte mit dem Applescript bereitstellen?

Ich erwähne den Kontext, da beim Mounten einer Festplatte mit Applescript die große Einschränkung darin besteht, dass bei einem Netzwerkvolume und einem kennwortgeschützten Netzwerk der Benutzername und das Kennwort für einen nahtlosen Vorgang als einfacher Text im Skript gespeichert werden müssen Ausführung.

UPDATE: Ein bisschen Suchen hat eine ähnliche Frage an anderer Stelle gefunden. Im Wesentlichen kann ein Skript erstellt werden, um dies zu tun, indem das Skript als Ordneraktion auf / Volumes angewendet wird:

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
Philip Regan
quelle
Ich möchte keine Festplatte mit AS bereitstellen. Ich möchte eine AS ausführen, wenn eine Festplatte bereitgestellt wird. Ich werde meinen Beitrag bearbeiten, um es klarer zu machen.
jsadfeew
Ich habe die Frage verstanden, aber ich denke nicht, dass dies sehr einfach möglich ist. Ich habe mich jedoch ein wenig umgesehen und etwas gefunden, das mit ein wenig Optimierung funktionieren sollte, um Ihren Anforderungen gerecht zu werden.
Philip Regan
Ich habe einige kleine Änderungen am Skript vorgenommen. Funktioniert gut :)
jsadfeew
12

Die wahrscheinlich robusteste Lösung besteht darin, einen launchdJob mit der folgenden StartOnMountEigenschaft zu erstellen -boolean YES:

StartOnMount <boolean>
Dieser optionale Schlüssel bewirkt, dass der Job jedes Mal gestartet wird, wenn ein Dateisystem bereitgestellt wird.

So macht es Time Machine (siehe /System/Library/LaunchDaemons/com.apple.backupd-attach.plist).

Daniel Beck
quelle
Ich denke, dies ist die robusteste Lösung, da sie nur von launchd abhängt, wo sich "so etwas" richtig befindet.
Matt
2

Verwenden Sie eine Finder FolderAction, die / Volumes überwacht. Wenn ein neuer Ordner angezeigt wird, bedeutet dies, dass eine neue Festplatte angehängt wurde. Jetzt kann Ihre FolderAction eine Automator-Aktion, AppleScript oder ein Shell-Skript ausführen, um Ihre Aufgabe zu erledigen.


quelle
1

MarcoPolo kann Aktionen basierend auf dem Festplattenanhang ausführen.


quelle
Diese App ist rabattiert, sollte vorerst die gepflegte Gabel verwenden: controlplaneapp.com
Даниил Пронин
0

Eine Lösung wäre, eine Automator-Anwendung zu erstellen, die die drei folgenden Aktionen verkettet:

  • Erhalten Sie spezifizierte Finder-Elemente
  • Mounten Sie das Disk-Image
  • Führen Sie AppleScript aus
kraymer
quelle
1
Auch hier möchte ich kein Image oder eine Festplatte mit Applescript bereitstellen. Ich möchte ein Skript ausführen, wenn eine Festplatte bereitgestellt wird. Ich kann keinen Weg finden, dies mit Ihren Schritten zu erreichen.
jsadfeew
Ja, ich sehe nach der Klarstellung, dass es nicht funktioniert, weil das die Festplatte ist, die Sie mounten (und nicht die Image-Festplatte).
Kraymer
Da Ihre Antwort eine andere Frage als die gestellte beantwortet, sollten Sie in Betracht ziehen, sie zu löschen.
DanielSmedegaardBuus