Und weiter mit Part XII der Serie Getting Started. Heute will ich die Verwendung von Shell-Scripten innerhalb AppleScript erläutern.

Warum überhaupt Shell Scripte innerhalb AppleScript verwenden ?

Man kann mit AppleScript zwar relativ viel realisieren, manchmal liegt der einsatz von Shell-Scripten innerhalb dem Gesamt AppleScript Code einfach näher, sei es weil die Aufgabe so leichter realisierbar ist oder überhaupt erst realisierbar wird, oder aber der User einfach ein Faible dafür hat.

Einstieg

Es gibt verschiedene Wege Shell Scripte innerhalb AppleScript einzusetzten. Ein einfacher Weg ist der Zugriff / Aufruf eines real existierenden Shell-Skript das irgendwo auf der Festplatte / Netzwerk oder wo auch immer vorhanden / zugreifbar ist.

Als Alternative dazu kann man seinen Shell-Script Code aber auch direkt innerhalb des AppleScript Codes definieren und dann daraus auch aufrufen. Ich werde in diesem Artikel die Scripte jeweils im AppleScript Code definieren um es übersichtlicher zu gestalten.

Eines haben beide Ansätze aber gleich, nämlich den in AppleScript definierten Befehl um die Scripte auszufà�hren -> do shell script

Basic Do Shell Script

Wir wollen den Inhalt des Home-Ordners abfragen und diesen in Form einer Liste ausgeben. Dafür definieren wir anfangs unser Shell-Script myShellScript,führen dies anschließend aus uns speichern die Antwort auf die Variable myHomeContent um diese dann abschließend mit einem display dialog auszugeben.

Der folgende Screenshot sollte das recht gut erklären:

Um die Code-Zeilen zu minimieren könnte man auch diesen Ansatz wählen der natürlich exakt das gleiche Resultat liefert.

Letzlich ist es reine Geschmacksache welche der beiden Varianten man verwendet. Noch kurz bzgl des verwendeten Shell-Scriptes (cd ~; ls) eine Erklärung:

  • Teil 1 des Shell-Scriptes (cd ~) wechselt in das User-Verzeichnis,
  • Teil 2 des Shell-Scriptes (ls) macht ein einfaches Listing.

Der Grundgedanke sollte klar sein, darum springe ich gleich weiter zum nächsten Beispiel.

Do Shell Script with administrator privileges

In manchen Fällen müssen Scripte mit erweiterten Rechten ausgeführt werden. In meinem Fall pasiert dies regelmäßiger da mein normaler Alltags User-Account keine Administrator-Rechte hat.

Um sich für die Ausführung kurzfristig diese Rechte zu verschaffen verwenden wir im folgenden den Befehl administrator privileges

Im Beispiel wollen wir die locate Datenbank auffrischen, was nur als Administrator wirklich Sinn macht. Wir definieren im ersten Schritt wieder wie oben das Shell Script und führen es in der folgenden Zeile dann aus.

Der Zusatz with administrator privileges läßt einen Usernamen und Password Dialog erscheinen mittels dem wir uns als Administrator ausweisen können auch wenn der aktuell verwendete User nicht in diese Kategorie zählt.

Der Password Dialog sollte wie folgt aussehen:

Geben wir dort nun die richtigen Daten ein, wird das ShellScript ausgefà�hrt und wir haben eine aktualisierte locate Datenbank.

Ich will nochmal auf die Benutzerkonten zu sprechen kommen, da dies sonst für Verwirrung sorgen könnte

In meinem Fall existiert ein Benutzerkonto A wie Alltagsuser ohne Administrative Rechte und ein Konto B wie Boss mit administrativen Rechten. Ich arbeite zu 99% als User A und wenn es nötig ist und ich kurzfristig mehr Rechte benötige landet man im Regelfall unter Mac OS X eh in einem Dialog der die Eingabe eines Benutzernamens und Passwortes erfordert. Ist dies der Fall verwende ich Namen und Password von User B um die Aktion durchführen zu können.

Abschließende Worte

Als ich zum ersten Mal mehr mit AppleScript gespielt habe war die fixe Idee mir selbst ein kleines Tool a la TinkerTool, MainMenu oder ähnliches zu basteln.
Letzlich bedienen sich diese Tools auch nur einfachen und bekannten Funktionen / Shell-Commands die mit einer mehr oder weniger schönen GUI verpackt sind.
Wenn man etwas Zeit investiert oder sich mal die Dokumentation des Tools Secrets zu Gemüte zieht wird man relativ schnell viele brauchbare Befehle finden die man selber innerhalb seinen Scripten einsetzten kann, sei es nun um den Finder neu zu starten, das Dock zu verändern oder aber den Cache zu flushen. Im Kern benötigt man selbst mit kleinen Prüfungen drum rum nur jeweils wenige Zeilen Code um dies umzusetzen.
Mein Tool wurde nie wirklich fertig, auch weil ich mit dne vorhandenen eigentlich zufrieden bin und es nicht einsehe unnütz meine Zeit zu verschwenden, aber zum Abschluss will ich trotzdem mal ein Einblick in die damalige Baustelle geben. Die abgebildeten Tabs sind alle voll funktionstüchtig inkl Fallunterscheidung zwischen 10.4 und 10.5

sowie Auszugsweise etwas Code:

So das wars auch schon wieder für heute …. viel Spass beim rumspielen =)

Share on Social Sites:
  • Digg
  • del.icio.us
  • Google
  • Technorati
  • Yigg
  • MisterWong
  • StumbleUpon

Similar Posts:
3 Responses to “Getting Started mit AppleScript (Lektion XII - Do Shell Script)”
  1. Ohhhja ! do shell script ist grossartig.

  2. hehe ja =)

    Ich glaub ohne die Aussicht auf diese Funktion hätte ich mir AppleScript nie ernsthaft angeschaut.

    Mein Tierprogramm macht quasi alle wirklich relevanten Aktionen auch auf der Shell, weil so die Verwendung von Exiftool am einfachsten ist.

  3. was mir in dem kontext noch einfällt: war das bekanntes Terrain oder Neuland für dich ?

    Sofern neu …. was wäre den noch interessant ?
    Bin grad am grübeln was ich als nächstes mache in der Reihe.

Leave a Reply