Shellscript beim Login ausführen

Diskutiere mit über: Shellscript beim Login ausführen im Mac OS X - Unix & Terminal Forum

  1. chrigu

    chrigu Thread Starter MacUser Mitglied

    Beiträge:
    155
    Zustimmungen:
    0
    Registriert seit:
    08.03.2004
    Ich habe ein Script gebastelt, das meine zweite Festplatte unmountet. Das Script /Library/Management/maryjane_unmount.sh läuft einwandfrei.

    Nun möchte ich beim Startvorgang dieses Script ausführen lassen, hab e bissle recherchiert.

    Doch leider will es mit diesem LoginHook nicht so recht funktioneren, habe wie in der Anleitung beschrieben sudo defaults write /Library/Preferences/com.apple.loginwindow LoginHook /Library/Management/maryjane_unmount.sh ausgeführt, doch bei einem Neustart wie auch bei einer Neuanmeldung erscheint meine Festplatte, wie gewohnt auf dem Schreibtisch.

    Gibt es eine Möglichkeit, die Präferenzdatei com.apple.loginwindow einzusehen gegebenenfalls zu editieren?
     
  2. lundehundt

    lundehundt MacUser Mitglied

    Beiträge:
    19.352
    Zustimmungen:
    881
    Registriert seit:
    22.02.2003
    Dein Ansatz sieht durchaus richtig aus. Es koennte unter Umstaenden was mit den Zugriffsrechten zu tun haben das dein script nich ausgefuehrt wird. Was sagt denn die Konsole (return code). Es gibt von Herrn Bombich auch das login window management tool, mit dem man den loginhook ueber ein GUI einbinden kann (http://www.bombich.com/software/lwm.html). Hast du das mal probiert?

    Cheers,
    Lunde
     
  3. chrigu

    chrigu Thread Starter MacUser Mitglied

    Beiträge:
    155
    Zustimmungen:
    0
    Registriert seit:
    08.03.2004
    Den LoginWindow Manager hab ich auch ausprobiert, das heisst den Pfad fürs Script angegeben, getestet und vom LoginWindow Manager als executable befunden und natürlich Apply gedrückt, nach dem Neustart erschien die Festplatte wieder, Script sieht übrigens so aus

    #!/bin/sh

    diskutil unmount /Volumes/maryjane


    maryjane_unmount.sh habe ich mit chmod 755 ausgeführt und verfügt nun über folgende Rechte: –rwxr-xr-x root admin

    über die Konsole bekomme ich Volume /Volumes/maryjane unmounted zurück. Ist das der Return Code?

    Ich frage mich schon ziemlich was hier falsch läuft. Gäbe es by the way noch eine andere Möglichkeit das Script während des Starts automatisch ausführen zu lassen?
     
  4. maceis

    maceis MacUser Mitglied

    Beiträge:
    16.645
    Zustimmungen:
    596
    Registriert seit:
    24.09.2003
    Diese Aufgabe schreit geradezu nach einem StartupItem.

    Ein StartupItem wird beim booten (also nicht erst bei der Anmeldung eines Benutzers) augeführt.
    Ein weiterer Vorteil ist, dass Du Dein Skript ggf. mithilfe der Datei /etc/hostconfig sehr einfach ein- und ausschalten kannst.

    Falls Du die DevTools installiert hast, findest Du hier eine Anleitung.
    Falls Du diesen Weg einschlagen möchtest und nicht weiterkommst, melde Dich einfach nochmal kurz.
     
  5. chrigu

    chrigu Thread Starter MacUser Mitglied

    Beiträge:
    155
    Zustimmungen:
    0
    Registriert seit:
    08.03.2004
    Schon mal Danke für deine zuvorkommende Hilfe!

    Die DevTools habe ich nicht installiert.
    Hab auch schon in Forum gesucht nach Anleitungen für ein sogenanntes Startup Item, aber nur herausgefunden, dass man nicht einfach so ein Shellscript in das Startup Item Verzeichnis legen kann.

    Ich wäre dir also sehr dankbar für ne kurze Einführung oder Anleitung
     
  6. Der Link, den maceis gepostet hat, enthält eine Anleitung (creating a StartupItem).
    Hier noch eine aus dem Forum (geht ohne DevTools): http://www.macuser.de/forum/showpost.php?p=37916&postcount=4
     
  7. maceis

    maceis MacUser Mitglied

    Beiträge:
    16.645
    Zustimmungen:
    596
    Registriert seit:
    24.09.2003
    Dieselbe Anleitung wie in den DevTools gibts auch bei Apple online und zwar hier.

    Ich habe mal kurz über die Anleitung von ._ut geschaut.
    Dabei ist mir eingefallen, dass ich im auch schon mal ne Anleitung zum automatischen Mounten von AFP Shares geschrieben habe.
    Die "StartupParameters.plist" habe ich in Normaltext geschrieben.
    Das geht auch und scheint mir einfacher zu sein.

    HTH
     
  8. chrigu

    chrigu Thread Starter MacUser Mitglied

    Beiträge:
    155
    Zustimmungen:
    0
    Registriert seit:
    08.03.2004
    Ok, ich hab mal ein bisschen gearbeitet. Hab zwar keine grosse Ahnung, aber korrigiert mich, wenn ich es falsch verstehe.

    Das Script befindet sich nun ich nun in /Library/StartupItems/unmountDisk
    und heisst unmountDisk

    Es gibt anscheinend sogenannte RunServices, brauch ich die oder wozu sind sie da? Nach meiner Vorstellung müsste ich nur noch in /etc/hostconfig folgendes Eintragen: UNMOUNTDISK=-YES-.

    Bei der StartupParameters.plist, die im gleichen Verzeichnis liegt, habe ich schon mehr Fragen.

    Description und Provides scheinen nicht so wichtig zu sein. Bei Requires und Uses bin ich mir nicht sicher, da ich nicht weiss was es überhaupt an Services gibt. Aber von mir aus gesehen müssten zuerst alle Disks gemountet werden, bevor der Befehl diskutil unmount ausgeführt werden kann. Was müsste ich bei Uses einfügen?

    Thanx
     
    Zuletzt bearbeitet: 29.08.2004
  9. maceis

    maceis MacUser Mitglied

    Beiträge:
    16.645
    Zustimmungen:
    596
    Registriert seit:
    24.09.2003
    AFAIR verhält es sich folgendermaßen:
    "Requires" sind Services, die gestartet sein müssen , damit Dein StartupItem überhaupt geladen wird.
    "Uses" ist für das System von Bedeutung, um festzulegen, in welcher Reihenfolge die Dienste bzw. StartupItems gestartet werden sollen.
    Hier könnte ein StartupItem stehen, dass zwar vor Deinem geladen werden soll, aber wenn es nicht oder nicht erfolgreich gestartet wird, hat das keinen Einfluss.
    Allerdings spielt für die Reihenfolge auch "Preference" eine Rolle.

    So ist es. Durch die Konstruktion "${UNMOUNTDISK:=-NO-}" = "-YES-" wird der Wert von $UNMOUNTDISK auf -NO- gesetzt, wenn die Variable nicht existiert oder leer ist.

    [edit]Ergänzung:
    "The RunService routine looks for StartService, StopService, and RestartService routines in your shell script and calls them to start, stop, or restart your services as needed. You must provide implementations for all three routines, although the implementations can be empty for routines whose commands your service does not support."[/edit]

    Mein Vorschlag:
    Code:
    #!/bin/sh
    
    . /etc/rc.common
    
    ##
    # unmountDisk
    ##
    
    StartService ()
    {
    if [ "${UNMOUNTDISK:=-NO-}" = "-YES-" ]; then
    ConsoleMessage "unmountDisk maryjane"
    diskutil unmount /Volumes/maryjane
    fi
    }
    
    StopService ()
    {}
    
    RestartService ()
    {}
    
    RunService "$1"
    
     
    Zuletzt bearbeitet: 29.08.2004
  10. chrigu

    chrigu Thread Starter MacUser Mitglied

    Beiträge:
    155
    Zustimmungen:
    0
    Registriert seit:
    08.03.2004
    Danke, Theoretisch habe ich es nun kapiert, jetzt liegts wohl am praktischen, weil es leider noch nicht funktioniert. Poste mal mein Script und hoffe jemand hat Adleraugen.

    Das unmountDisk Script liegt in /Library/StartupItems/unmountDisk und hat Rechte: -rwxr-xr-x


    Das StartupParameters.plist liegt in /Library/StartupItems/unmountDisk und hat Rechte: -rwxr-xr-x

    In /etc/hostconfig sieht es unten so aus:
    Sollte doch gehen oder?
     
Die Seite wird geladen...
Ähnliche Themen - Shellscript beim Login Forum Datum
Suche shellscript schreiber Mac OS X - Unix & Terminal 15.06.2012
Shellscript. Neue Zeile am Anfang einer Log-Datei schreiben Mac OS X - Unix & Terminal 20.03.2012
Hotfolder shellscript Mac OS X - Unix & Terminal 01.11.2011
Shellscript beim Herunterfahren ausführen Mac OS X - Unix & Terminal 08.10.2008
ich will ein shellscript basteln.... Mac OS X - Unix & Terminal 01.10.2007

Diese Seite empfehlen

Benutzerdefinierte Suche