Push-Nachrichten von MacTechNews.de
Würden Sie gerne aktuelle Nachrichten aus der Apple-Welt direkt über Push-Nachrichten erhalten?
Forum>Entwickler>[kaunchd] Probleme mit bewährtem Script

[kaunchd] Probleme mit bewährtem Script

Bozol
Bozol27.12.1917:29
Hallo,

ich habe seit Catalina Probleme mit einem ShellScript welches seit 2014 unter jedem macOS problemlos lief.

Wenn ich das Script per Klick oder im Terminal starte läuft es ohne Fehler durch, die dazu gehörende .plist habe ich seinerzeit mit Lauchcontrol erstellt und lies sich auch in den Jahren problemlos einrichten. Unter Catalina kommt nun jedoch beim Testlauf per Launchcontrol nach ein paar Sekunden die Fehlermeldung “Error 1” welche lt. Launchcontrol anscheinend eine Allerwelts-Fehlermeldung zu sein scheint und nicht genau definiert wird.

Hier das Script:
#!/bin/sh

test -e /Volumes/Filme || exit 0

ls -URlT /Volumes/Filme | grep -iE 'mkv|mp4|m4v'|awk '{ print $9,$10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$20,$21,$22,$23,$ 24,$25 }' | sed 's/^/Filme /' > '/Users/fred/Documents/VideolisteNAS/Liste_Filme2.txt'

iconv -f UTF8-MAC -t UTF-8 /Users/fred/Documents/VideolisteNAS/Liste_Filme2.txt > /Users/fred/Documents/VideolisteNAS/Liste_Filme.txt

rm /Users/fred/Documents/VideolisteNAS/Liste_Filme2.txt

Hier die Fehlermeldung:
ls: Filme: Operation not permitted
/Users/fred/Library/Scripts/VideosaufNAS: line 6: /Users/fred/Documents/VideolisteNAS/Liste_Filme.txt: Operation not permitted

Ich habe versuchsweise den in dem Script verwendeten Befehlen , Terminal und dem Script selbst Festplattenvollzugriff gewährt, jedoch ohne Erfolg.
Auch habe ich das Script mit Shellcheck überprüft, da wurde (in meinen Augen) nichts Arges entdeckt:
fred@iMac ~ % shellcheck /Users/fred/Library/Scripts/VideosaufNAS

In /Users/fred/Library/Scripts/VideosaufNAS line 6:
ls -URlT /Volumes/Filme | grep -iE 'mkv|mp4|m4v'|awk '{ print $9,$10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$20,$21,$22,$23,$ 24,$25 }' | sed 's/^/Filme /' > '/Users/fred/Documents/VideolisteNAS/Liste_Filme2.txt'
^-- SC2010: Don't use ls | grep. Use a glob or a for loop with a condition to allow non-alphanumeric filenames.

For more information:
  https://www.shellcheck.net/wiki/SC2010 -- Don't use ls | grep. Use a glob o...
fred@iMac ~ % 

Hat jemand von Euch eine Idee wie ich das Problem lösen kann? Ich habe natürlich selbst auch auf stackoverflow und dergl. gesucht, bin aber nicht fündig geworden bzw. die Lösungsvorschläge waren nicht zielführend.

Danke fürs lesen.

Gruss
Fred
0

Kommentare

Marcel Bresink27.12.1917:34
Das Skript greift auf Daten zu, die sich nicht auf dem System- oder Daten-Volume befinden. Das lässt die Datenschutzfunktion von Catalina nicht mehr zu.

Du müsstest dem Aufrufer (hier wohl "Launchcontrol") über Systemeinstellungen die Genehmigung für "Festplattenvollzugriff" erteilen, damit die systemweite Sandbox den Zugriff erlaubt.
0
Bozol
Bozol27.12.1917:47
Hallo Marcel,
vielen Dank für die schnelle Antwort. Leider hat der Festplattenvollzugriff für Launchcontrol nichts bewirkt.

0
Stresstest27.12.1918:30
Ok, nun gibt es zwei Threads hier dazu

Was du versuchen kannst: "/bin/ls" auch einmal in die Ausnahme mit aufzunehmen.
Ich vermute, das "ls" auch per launchd gestartet nicht auf die geschützten Bereiche deines User-Ordners zugreifen kann.
+1
Marcel Bresink27.12.1918:54
Bozol
vielen Dank für die schnelle Antwort. Leider hat der Festplattenvollzugriff für Launchcontrol nichts bewirkt.

Du hast nicht verraten, dass Du "Launchcontrol" offenbar nur als grafische Oberfläche für die Startdienste von macOS verwendest. In dem Fall ist Launchcontrol überhaupt nicht der Aufrufer, sondern der "launchd"-Systemdienst.

In dem Fall müsste dem Skript selbst die Genehmigung für den Festplattenvollzugriff erteilt werden. Da das aber kein signiertes, unveränderliches Programm ist, dürfte macOS das aus Sicherheitsgründen nicht akzeptieren. In dem Fall gibt es keine andere Lösung, als das Skript entweder in "echtes" Programm umzuschreiben, oder es direkt von einem vollwertigen Programm (wie dem Terminal) aufzurufen, nicht etwa über den Umweg über launchctl oder Ähnliches.
0
mactelge
mactelge27.12.1919:18
Ich bewundere Menschen, die in der Lage sind, aus dem Wirrwarr von Zahlen und Buchstaben zu erkennen, was da passiert. Mehr noch – was da nicht passiert, weil etwas fehlerhaft ist.

Chapeau.
„Dreh´dich um – bleib´wie du bist – dann hast du Rückenwind im Gesicht!“
0
Bozol
Bozol27.12.1919:22
Stresstest
Was du versuchen kannst: "/bin/ls" auch einmal in die Ausnahme mit aufzunehmen
hatte ich getan, siehe:
Bozol
Ich habe versuchsweise den in dem Script verwendeten Befehlen , Terminal und dem Script selbst Festplattenvollzugriff gewährt,
Marcel Bresink
Du hast nicht verraten, dass Du "Launchcontrol" offenbar nur als grafische Oberfläche für die Startdienste von macOS verwendest. In dem Fall ist Launchcontrol überhaupt nicht der Aufrufer, sondern der "launchd"-Systemdienst.
Sorry dass ich das “unterschlagen" habe.
Ich habe in den letzten Stunden doch noch eine Lösung gefunden: es gab von Launchcontrol eine neue Version die ich noch nicht besass. Mit dieser Version kommt ein Zusatztool mit welches, wenn Ichs richtig verstanden habe, es ermöglicht Scripts einfach mit Festplattenvollzugangsrechten ausgestattet auszuführen. Das Tool heisst fdautil und ruft, jetzt in meinem Fall, das Script mit
/usr/local/bin/fdautil exec /Users/fred/Library/Scripts/VideosaufNAS

auf.
Damit wird mein Script ausgeführt.
mactelge
Ich bewundere Menschen, die in der Lage sind, aus dem Wirrwarr von Zahlen und Buchstaben zu erkennen, was da passiert.
Da kann ich Dir nur beipflichten Ich hätte, als bekennender Script-Noob, das Script, so wie es da steht, wohl nicht aus dem Stand hinbekommen. Ich habe mir über Tage auf Recherche in verschiedenen Foren die Befehle raus gesucht welche ich nutzen konnte und diese dann an meine Situation angepasst.

Ich möchte mich hiermit bei allen für Ihre Tipps und Lösungsvorschläge bedanken.

Noch ein schönes Wochenende wünscht
Fred
+2

Kommentieren

Diese Diskussion ist bereits mehr als 3 Monate alt und kann daher nicht mehr kommentiert werden.