Apple Script ausführen lassen

  • Hallo

    ich würde gerne beim beenden von XBMC ein Script ausführen lassen. Am besten mit dem Button - Power Optionen - Verlassen - im Confluence Logon Profil Screen.

    Wie kann ich das bewerkstelligen. Das Script das ich ausführen möchte ist bereits fertig.

    Alternativ wäre mir auch ein NEUER Button sonst wo recht über den ich das Script ausführen kann - Das würde ich aber nur machen wenn es sonst keine Möglichkeit gibt.

    Danke für jede Hilfe

    Homeserver

  • Du kanst das onclick des Buttons erweitern...
    Der Shutdownbutton im Confluence liegt in Home.xml ganz unten...

    Da kannst du einfach ein zweites onclick davor setzen...dann wird erst dein Skript ausgeführt und dann die Aktione die dahinter steht...z.B.

    Code
    <onclick>RunScript(MeinScript)</onclick>
    <onclick>System.Exit</onclick>

    mm

  • Hallo Mad-max

    Danke - Nur ganz bin ich noch nicht dabei unter Contents/Resources/XBMC/addons/skin.confluence/720p hab ich die Home.xml gefunden.

    In der ganzen Datei gibt es kein System.Exit event.

    Diesen Bereich hab ich gefunden


    <control type="button" id="20">
    <description>Power push button</description>
    <posx>55</posx>
    <posy>15</posy>
    <width>43</width>
    <height>43</height>
    <label>31003</label>
    <font>-</font>
    <aligny>-</aligny>
    <onclick>ActivateWindow(ShutdownMenu)</onclick>
    <texturefocus>home-power-FO.png</texturefocus>
    <texturenofocus>home-power.png</texturenofocus>
    <onleft>21</onleft>
    <onright>21</onright>
    <onup>9002</onup>
    <ondown>9003</ondown>
    </control>

    Tja and now?!??!

  • Also eine Schritt weiter bin ich. Momentan hab ich mich für den Suspend Button in der DialogbuttonMenu.xml entschieden. Dort habe ich das vorhandene onclick event geändert.
    Leider komme ich mit der Syntax noch nicht ganz klar.
    Ich möchte ein Applescript starten und habe auch gefunden das ich nicht nur RunScript sondern auch RunAppleScript verwenden kann.
    Ich habe probiert

    <onclick>RunAppleScript(special://~/Library/Application Support/XBMC/Logout.app)</onclick>

    <onclick>RunAppleScript(~/Library/Application Support/XBMC/Logout.app)</onclick>


    Diese Zeile hab ich auch mit Backslash vor dem Leezeichen probiert damit er das Leerzeichen kennt
    <onclick>RunAppleScript(special://~/Library/Application Support/XBMC/Logout.app)</onclick>


    Hab das Logout.app auch schon auf ein smb Verzeichnis gelegt und dieses probiert als Pfad anzugeben wie in meinen Sources

    Auch mit Anführungszeichen hab ich es probiert
    <onclick>RunAppleScript("~/Library/Application Support/XBMC/Logout.app")</onclick>


    Wo liegt mein Hund begraben?!?!?

  • Tja hier der Ausschnitt


    19:07:52 T:2898156072 DEBUG: SDLKeyboard: scancode: 7d, sym: 0112, unicode: f701, modifier: 0
    19:07:52 T:2898156072 DEBUG: OnKey: down (f081) pressed, action is Down
    19:07:52 T:2898156072 DEBUG: SDLKeyboard: scancode: 7d, sym: 0112, unicode: f701, modifier: 0
    19:07:52 T:2898156072 DEBUG: OnKey: down (f081) pressed, action is Down
    19:07:52 T:2898156072 DEBUG: SDLKeyboard: scancode: 7d, sym: 0112, unicode: f701, modifier: 0
    19:07:52 T:2898156072 DEBUG: OnKey: down (f081) pressed, action is Down
    19:07:52 T:2898156072 DEBUG: SDLKeyboard: scancode: 24, sym: 000d, unicode: 000d, modifier: 0
    19:07:52 T:2898156072 DEBUG: OnKey: return (f00d) pressed, action is Select
    19:07:52 T:2898156072 DEBUG: ExecuteXBMCAction : Translating RunAppleScript(special://masterprofile/Logout.app)
    19:07:52 T:2898156072 DEBUG: ExecuteXBMCAction : To RunAppleScript(special://masterprofile/Logout.app)
    19:07:53 T:2898156072 DEBUG: ------ Window Deinit (DialogButtonMenu.xml) ------
    19:07:58 T:2898156072 INFO: Python, unloading python shared library because no scripts are running anymore
    19:08:02 T:2898156072 DEBUG: SDLKeyboard: scancode: 00, sym: 0136, unicode: 0000, modifier: 0
    19:08:02 T:2898156072 DEBUG: GetActionCode: Trying Hardy keycode for 0xf200
    19:08:02 T:2898156072 DEBUG: Previous line repeats 3 times.
    19:08:02 T:2898156072 DEBUG: OnKey: 0 (f200) pressed, action is
    19:08:16 T:2957578240 DEBUG: Thread Jobworker 2957578240 terminating (autodelete)
    19:08:16 T:2958110720 DEBUG: Thread Jobworker 2958110720 terminating (autodelete)
    19:08:16 T:2960240640 DEBUG: Thread Jobworker 2960240640 terminating (autodelete)
    19:08:16 T:2898156072 INFO: CheckIdle - Closing session to http://feeds.feedburner.com (easy=0x998a400, multi=0x4b50ee0)
    19:08:18 T:2958643200 DEBUG: Thread Jobworker 2958643200 terminating (autodelete)


    hilft das oder brauchst du mehr?

  • Hi Ben

    für die Erklärung muss ich doch etwas weiter ausholen. Ich habe einen Opendirectory Server auf dem der Benutzer Homecinema liegt (Mac mini im Wohzimmer). Und dann sind in 4 weiteren Räumen iMacs verteilt mit welchen man den Benutzer Homecinema auf den Mac mini starten kann.

    Alles TOP.

    Wenn ich jetzt aber aus dem XBMC raus gehe muss ich mich abmelden am Server im Wohzimmer. -> Logout

    Bei den anderen Macs -> Logout und dann auf ruhezustand gehen.

    Weil den Server möchte ich nicht in den Ruhezustand schicken.


    Das mach ich indem ich die lokale IP des rechners abfrage wenn diese nicht die Serverip hat dann logout und sleep ansonsten am server nur logout.


    Alles mit Apple Script Editor -> als Programm speichern -> das ist dann ein .app

    Da könnte der Haken liegen - werde das mit der Dateiextention .scpt und .app mal checken wie du erwähnt hast!

    hmmm....

  • Tja so richtig zum Erfolg hat es leider nicht gereicht.
    Ich habe mein Script nun nicht als Programm abgespeichert sondern das Script mit der Endung SCPT belassen und diese Datei zum Starten angegeben.

    Leider tut sich nichts.
    Im Log kann ich leider auch nichts erkennen.

    hier ein Ausschnitt


    12:39:18 T:2898156072 DEBUG: OnKey: down (f081) pressed, action is Down
    12:39:19 T:2898156072 DEBUG: SDLKeyboard: scancode: 7d, sym: 0112, unicode: f701, modifier: 0
    12:39:19 T:2898156072 DEBUG: OnKey: down (f081) pressed, action is Down
    12:39:19 T:2898156072 DEBUG: SDLKeyboard: scancode: 24, sym: 000d, unicode: 000d, modifier: 0
    12:39:19 T:2898156072 DEBUG: OnKey: return (f00d) pressed, action is Select
    12:39:19 T:2898156072 DEBUG: ExecuteXBMCAction : Translating RunAppleScript(special://masterprofile/Logout.scpt)
    12:39:19 T:2898156072 DEBUG: ExecuteXBMCAction : To RunAppleScript(special://masterprofile/Logout.scpt)
    12:39:20 T:2898156072 DEBUG: ------ Window Deinit (DialogButtonMenu.xml) ------
    12:39:24 T:2898156072 INFO: Python, unloading python shared library because no scripts are running anymore
    12:39:29 T:2898156072 DEBUG: SDLKeyboard: scancode: 00, sym: 0136, unicode: 0000, modifier: 0
    12:39:29 T:2898156072 DEBUG: GetActionCode: Trying Hardy keycode for 0xf200
    12:39:29 T:2898156072 DEBUG: Previous line repeats 3 times.
    12:39:29 T:2898156072 DEBUG: OnKey: 0 (f200) pressed, action is
    12:39:30 T:2898156072 DEBUG: CAnnouncementManager - Announcement: OnQuit from xbmc
    12:39:30 T:2898156072 DEBUG: GOT ANNOUNCEMENT, type: 4, from xbmc, message OnQuit
    12:39:30 T:2957578240 DEBUG: Thread Jobworker 2957578240 terminating (autodelete)
    12:39:30 T:2960240640 DEBUG: Thread Jobworker 2960240640 terminating (autodelete)
    12:39:30 T:2958110720 DEBUG: Thread Jobworker 2958110720 terminating (autodelete)
    12:39:30 T:2958643200 DEBUG: Thread Jobworker 2958643200 terminating (autodelete)
    12:39:30 T:2898156072 NOTICE: Storing total System Uptime


    das wäre das Script wobei der Bereich der Interessant ist zu Testzwecken über einen Dialog ausgegeben wird.

    set LocalIP to do shell script "ifconfig en0|grep 'inet '|cut -d ' ' -f 2"

    set ServeriP to "10.0.0.1"


    if LocalIP is ServeriP then

    display dialog "Logout am Server"

    # tell application "System Events"

    # [definition='1','0']log[/definition] out

    # end tell

    else

    display dialog "Logout and sleep local"

    # tell application "System Events"

    # [definition='1','0']log[/definition] out

    # sleep

    # end tell

    end if


    hier noch der Auszug aus der XLS Datei wo ich das onclick event bearbeitet habe


    <control type="button" id="6">
    <description>Suspend button</description>
    <width>340</width>
    <height>40</height>
    <textcolor>grey2</textcolor>
    <focusedcolor>white</focusedcolor>
    <align>center</align>
    <textwidth>290</textwidth>
    <texturefocus border="25,5,25,5">ShutdownButtonFocus.png</texturefocus>
    <texturenofocus border="25,5,25,5">ShutdownButtonNoFocus.png</texturenofocus>
    <onclick>RunAppleScript(special://masterprofile/Logout.scpt)</onclick>
    <visible>System.CanSuspend</visible>
    <pulseonselect>no</pulseonselect>
    <font>font13</font>
    <label>13011</label>
    </control>


    Tja ich hoffe ihr könnt mir weiterhelfen. !?!?


    Ciao

  • Abenteuerlich klingt gut. Ich würde es mit benutzerfreundlich bezeichnen. Ich habe ja Familie und meine Frau interessiert das alles nicht. Welch ein Wunder. Hauptsach es geht und ich muss nicht alles erklären warum wieso wo was zu tun hat.
    Wär super wenn du dir das mal anschauen kannst Ben.
    Theoretisch könnte man ja auch den ganzen Suspend Button in der XLS kopieren und daraus einen Logout machen. Aber wenn es mal funktioniert das etwas abzuändern ist ja keine Kunst.
    Also ciao ciao bin schon gespannt ob du was zusammenbringst.

  • Da ich dein Script hier nicht testen kann, muss ich fragen: Wenn du das Script ausserhalb von XBMC startest, dann klappt alles? Es scheitert also wirklich nur wenn es über XBMC abgerufen wird? Warum nutzt du nicht die Buildin Function "Bereitschaft", das schickt den Mac doch in den Standby und damit sollte doch auch die Abmeldung passen (hier kann man ja zur Not auch das Script über den LogoutHook ausführen lassen). Lässt sich dein Vorhaben alternativ in ein Shell-Script verpacken?

    Ich würde es folgendermaßen machen:

    Bash
    #!/bin/bash
    /usr/bin/osascript /Pfad/zum/Apple/Script/Logout.scpt

    Das als blubb.sh abspeichern, und dann über "sudo defaults write com.apple.loginwindow LogoutHook /Pfad/zur/blubb.sh" das Ganze in den LogoutHook packen. Damit sollte bei Standby oder Herunterfahren jeweils die Abmeldung wie du sie dir vorstellst erfolgen, vorausgesetzt dein AppleScript funktioniert. Brauchst dann in XBMC gar nichts reinzubasteln.

    Einmal editiert, zuletzt von Ben (29. September 2012 um 13:04)

  • hallo ben
    also ich muss gestehen das ich das script noch überarbeiten musste. jetzt läuft es einwandfrei.

    set LocalIP to do shell script "ifconfig en0|grep 'inet '|cut -d ' ' -f 2"

    set ServeriP to "10.0.0.1"


    if LocalIP is ServeriP then

    # display dialog "Logout am Server"

    tell application "System Events"

    keystroke "q" using {command down, shift down, option down}

    end tell

    else

    # display dialog "Logout and sleep local"

    tell application "System Events"

    keystroke "q" using {command down, shift down, option down}

    end tell

    tell application "System Events"

    sleep

    end tell

    end if


    die buletin function bereitschaft nutze ich nicht gerne weil dadurch kein sauberer logout durchgeführt wird. die mountpoints funktionieren danach nicht mehr sauber.


    über den logout hook wird das script dann ja bei jedem ausgeführt der sich am system auslogt - das möchte ich eigentlich nicht weil ich mich ja auch mit anderen netzwerkusern einloggen kann.
    hab ich das falsch verstanden. das logout hook wird nach dem logout ausgeführt. das wäre aus meiner sicht dann nicht sinnvoll.


    am liebsten wäre es mir wenn ich mein script aus dem XBMC irgendwie aufrufen könnte. wie ist mir eigentlich wurscht...

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!