• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

Script lässt sich nicht mit Crontab starten?

Thems

Schöner von Nordhausen
Registriert
18.07.09
Beiträge
324
Hi, ich versuche grade ein Script für die App Selfcontrol via cronjobs starten zu lassen. Im ApplescriptEditor läuft es perfekt, aus dem Terminal heraus lässt es sich auch problemlos starten. Nur wenn ich das ganze über eine crontab laufen lasse, will das ganze nicht richtig funktionieren. Es öffnet zwar die Anwendung selfControl, aber startet nicht die Ausführung.

Hat jemand eine Idee, woran das liegen könnte?

das script starte ich mit:

Code:
osascript /Users/thomas/Documents/Scripte/selfControl.scpt 45

der cronjob entsprechend:

Code:
#min    hour    mday    month   wday    operation
0 8 * * * osascript /Users/thomas/Documents/Scripte/selfControl.scpt 45

Hier das Script ausm Netz, leicht abgeändert (und ja, mir ist bewusst, wie unsicher Klartext-Passworte sind):

Code:
[B]on[/B] [COLOR=#103FFB][B]run[/B][/COLOR] [COLOR=#518E16]argv[/COLOR]    [B]set[/B] [COLOR=#518e16]defaultTime[/COLOR] [B]to[/B] 15
    
    [B]try[/B]
        [B]set[/B] [COLOR=#518e16]myTime[/COLOR] [B]to[/B] [COLOR=#103ffb][I]item[/I][/COLOR] 1 [B]of[/B] [COLOR=#518e16]argv[/COLOR] [B]as[/B] [COLOR=#103ffb][I]number[/I][/COLOR]
    [B]on[/B] [B]error[/B]
[COLOR=#518E16][COLOR=#000000]        [B]set[/B] [/COLOR]myTime[COLOR=#000000] [B]to[/B] [/COLOR]defaultTime[/COLOR]
    [B]end[/B] [B]try[/B]
    
    [B]set[/B] [COLOR=#518e16]myPass[/COLOR] [B]to[/B] "******"
    
    [B]tell[/B] [COLOR=#103ffb][I]application[/I][/COLOR] "SelfControl" [B]to[/B] [COLOR=#103ffb][B]activate[/B][/COLOR]
    
    [B]tell[/B] [COLOR=#103ffb][I]application[/I][/COLOR] "System Events"
        [B]tell[/B] [COLOR=#103ffb][I]process[/I][/COLOR] "SelfControl"
            [B]tell[/B] [COLOR=#103ffb][I]slider[/I][/COLOR] [B]of[/B] [COLOR=#103ffb][I]window[/I][/COLOR] "SelfControl" [B]to[/B] [B]set[/B] [COLOR=#8039d8]value[/COLOR] [B]to[/B] [COLOR=#518e16]myTime[/COLOR]
            [COLOR=#103ffb][B]click[/B][/COLOR] [COLOR=#103ffb][I]button[/I][/COLOR] "Start" [B]of[/B] [COLOR=#103ffb][I]window[/I][/COLOR] "SelfControl"
        [B]end[/B] [B]tell[/B]
        [B]tell[/B] [COLOR=#103ffb][I]window[/I][/COLOR] 1 [B]of[/B] [COLOR=#103ffb][I]process[/I][/COLOR] "SecurityAgent"
            [B]with[/B] [B]timeout[/B] [B]of[/B] 15 [COLOR=#103ffb][I]seconds[/I][/COLOR]
                [B]repeat[/B]
                    [B]set[/B] [COLOR=#518e16]tryAgain[/COLOR] [B]to[/B] [COLOR=#5d3690]false[/COLOR]
                    [B]try[/B]
                        [B]set[/B] [COLOR=#8039d8]value[/COLOR] [B]of[/B] [COLOR=#103ffb][I]text field[/I][/COLOR] 2 [B]of[/B] [COLOR=#103ffb][I]scroll area[/I][/COLOR] 1 [B]of[/B] [COLOR=#103ffb][I]group[/I][/COLOR] 1 [B]to[/B] [COLOR=#518e16]myPass[/COLOR]
                    [B]on[/B] [B]error[/B]
                        [COLOR=#0936bb][B]delay[/B][/COLOR] 1
                        [B]set[/B] [COLOR=#518e16]tryAgain[/COLOR] [B]to[/B] [COLOR=#5d3690]true[/COLOR]
                    [B]end[/B] [B]try[/B]
                    [B]if[/B] [B]not[/B] [COLOR=#518e16]tryAgain[/COLOR] [B]then[/B] [B]exit[/B] [B]repeat[/B]
                [B]end[/B] [B]repeat[/B]
[COLOR=#103FFB][B]click[/B][I]button[/I][COLOR=#000000] 2 [B]of[/B] [/COLOR][I]group[/I][COLOR=#000000] 2[/COLOR][/COLOR]
            [B]end[/B] [B]timeout[/B]
        [B]end[/B] [B]tell[/B]
    [B]end[/B] [B]tell[/B]
[B]end[/B] [COLOR=#103FFB][B]run[/B][/COLOR]
 
Zuletzt bearbeitet:

Rastafari

deaktivierter Benutzer
Registriert
10.03.05
Beiträge
18.150
1) cronjobs laufen als root
2) WTF benutzt immer noch cron? Nimmstdu launchd
 

Thems

Schöner von Nordhausen
Registriert
18.07.09
Beiträge
324
Sorry, bin noch recht unerfahren im Umgang mit dem Terminal. Crontabs anlegen war schon fast das höchste der Gefühle bis jetzt. Will mich auch in nächster Zeit mehr mit dem System besonders im Zusammenhang mit Automatisierung beschäftigen, nur fehlt mir grade etwas die Zeit :(

Bis jetzt habe ich noch nicht mit launchd gearbeitet, geschweige denn mit plists (außer mal versucht, Mail-Regeln zu modifizieren). Was ich jetzt so beim überfliegen von ein paar Seiten gefunden habe sieht für mich doch etwas komplizierter aus, als sich das mal eben in 5 Minuten zusammen zu basteln.

Werde ich wohl erst einmal noch mit der direkten Eingabe machen müssen. :/

Aber danke schon einmal für den Hinweis, das Cronjobs als root ausgeführt werden. War mir noch nicht bewusst.
 

MacAlzenau

Golden Noble
Registriert
26.12.05
Beiträge
22.509
Mit Lingon soll man launchd-Prozesse per GUI anlegen und steuern können.
 

Marcel Bresink

Hadelner Sommerprinz
Registriert
28.05.04
Beiträge
8.573
Die Behauptung, dass Cronjobs als root laufen, ist falsch und es kann gute Gründe geben, cron den Vorzug vor launchd zu geben.

Es gibt zwei Ursachen, weshalb das nicht läuft: Zum einen setzt cron nicht die Umgebungsvariablen, die von AppleScript benötigt werden, zum anderen ist nicht garantiert, dass überhaupt eine aktive Bildschirmsitzung läuft (also dass jemand an der grafischen Oberfläche angemeldet ist), wenn das System den Job aufruft. Das Script nimmt aber an, dass es Fenster sowie die Programme SelfControl und System Events gibt.

Du kannst versuchen, das AppleScript zu kompilieren (als App abspeichern) und dann ein Unix-Shell-Script zu erstellen, das diese Anwendung aufruft:

#!/bin/sh
/usr/bin/open /pfad/ScriptApp

In der Crontab müsste dann "/bin/sh /pfad/meinShellScript" aufgerufen werden.
 

Rastafari

deaktivierter Benutzer
Registriert
10.03.05
Beiträge
18.150
Die Behauptung, dass Cronjobs als root laufen, ist falsch
Ja ja. Sie laufen mit Benutzerrechten, aber dennoch im privaten Bootstrap-Namespace von root. Besser? Ist das so etwa hilfreicher?
es kann gute Gründe geben, cron den Vorzug vor launchd zu geben.
Das wäre spannend zu erfahren - warum und in welcher Situation der eine (selbst delegierende) launchd-Job einen Vorteil gegenüber einem anderen (nativen) launchd-Job haben könnte.
setzt cron nicht die Umgebungsvariablen, die von AppleScript benötigt werden
Als da welche wären?