• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Was gibt es Schöneres als den Mai draußen in der Natur mit allen Sinnen zu genießen? Lasst uns teilhaben an Euren Erlebnissen und macht mit beim Thema des Monats Da blüht uns was! ---> Klick

Automator: Vor Aktionen per Skript Spotlight- Privatsphäre ändern?

joe kool

Morgenduft
Registriert
29.09.11
Beiträge
165
Hi zusammen,

ich bin mir nicht ganz sicher, ob meine Frage hier richtig ist. Falls sie in ein anderes Forum sollte, entschuldige ich mich und bitte einen Moderator den Thread zu verschieben.

Ich habe heute ein paar einfache Automator- Progs zusammengebastelt, die meine Dateien sortieren und meinen internen Speicher freihalten sollen. Das klappt alles ziemlich gut - die Steuerung mache ich per iCal- Ereignis und über Control Plane, das dann je nach Umgebung (externe Platten) Applescript- Skripte ausführt, welche die Automator- Programme öffnen (wahrscheinlich etwas umständlich, aber klappt soweit perfekt). Einige Automator- Programme sollen allerdings auf Ordner zugreifen, die durch die Privatsphäre- Einstellung aus der Spotlightsuche ausgeschlossen sind. Deshalb würde ich gerne per Shellskript (im Automator) oder über das Applescript- Skript, welches das Automator- Programm lädt, die betreffenden Ordner aus der Spotlight- Privatsphäre nehmen, bevor das eigentliche Verschieben der Dateien beginnen kann. Nach dem Durchlaufen des Automator- Programmes sollen die Ordner dann wieder in die Spotlight- Privatsphäre aufgenommen werden. Ist das möglich? bzw.. kennt jemand die erforderlichen Befehle? Wäre klasse, denn Google hat mir trotz intensiver Suche nicht so viel gebracht..

Grüße,
Joe
 

Pill

Adams Parmäne
Registriert
07.07.12
Beiträge
1.310
So könnte es gehen:

http://praveenmatanam.wordpress.com...-privacy-tab-of-spotlight-using-shell-script/

Aber das ist meiner bescheidenen Meinung nach viel zu kompliziert. Wenn ich dein Anliegen richtig verstanden habe, dann möchtest du Dateien nach bestimmten Kriterien suchen und dann verschieben/kopieren/löschen. Das alles lässt sich recht einfach mit einem Shellscript und den Befehlen find, mv, cp und rm machen. Ein Shellscript lässt sich außerdem sehr gut in ein AppleScript einbinden (mit dem Befehl do shell script). Du könntest so deinen Workflow stark vereinfachen und potentielle Fehlerquellen eliminieren.
 

joe kool

Morgenduft
Registriert
29.09.11
Beiträge
165
Super, vielen Dank für die Antwort! Stimmt, es ist wirklich umständlich. Werde mir heute Abend mal beide Möglichkeiten etwas genauer anschauen - wobei ich noch nicht so umfassende Erfahrungen im "freien Schreiben" von Skripten habe, deshalb habe ich mich erstmal auf den Automator gestürzt.

Vielen Dank nochmal,
Joe
 

joe kool

Morgenduft
Registriert
29.09.11
Beiträge
165
Moin,

ich habe das gestern Abend mal ausprobiert und mich ein bisschen über Shellscripte informiert - nach einigen Stunden (8! - wo ist die Zeit hin..?!) standen dann gegen sechs Uhr früh die Terminalbefehle, mit denen ich an meine Ziele komme.

Die Variante mit den Zeilen aus deinem Link die Spotlight- Ausnahmen zu verändern scheint hier ziemlich träge zu sein (mögliche Fehler meinerseits natürlich nicht ausgeschlossen). Ich kann die Einträge über das Terminal bearbeiten und bekomme mit dem read- Befehl auch die gewünschte Ausgabe. Nur ändern sich die Privatsphäre- Ordner in der Systemsteuerung nicht und das Automatorprogramm hat weiterhin keine Rechte auf die Ordner zuzugreifen - dachte ich zuerst - bis ich dann später festgestellt habe, dass eine komplette Spotlight- Indizierung angestoßen wurde und nach der Indizierung die von mir gewünschten Ordner in der Privatsphäre aufgeführt würden. Also ist es wirklich langsam ein bisschen aufwändiger als ein schlankes Shellscript und nicht für die Aufgabe geeignet.

Mein Problem ist jetzt die Übernahme der Terminalzeilen in ein Applescript, vor allem die Einbindung des root- Passwortes, aber auch die korrekte Übernahme der Pfade, die vom Terminal zwar angenommen werden, von Applescript jedoch nicht. Ich habe auch gelesen, dass man die sudoer- Liste bearbeiten kann und somit dem Skript oder Befehl direkt schon root- Rechte mit auf den Weg gibt. Ich weiß nicht, was besser ist, mein root- Passwort offen in einem Skript liegen zu haben oder einem Befehl wie mv standardmäßig root- Rechte zu geben, aber da ich eh schon ein applescript habe, in dem mein admin- Passwort steht, ist der Zug für mich wohl eh schon abgefahren..

Also wenn ich nun folgende Terminalzeile habe:

sudo find /Users/joe\ kool/Desktop/1 -name "*.docx" -exec mv -f "{}" /Volumes/2\,5/opt/incoming \;

wie bekomme ich die dann von Applescript oder dem Automator ausgeführt? Nach meiner Google- Suche sollte in einem Shellscript im Automator z.B.:

sudo su
MEINROOTPASSWORT
sudo find /Users/joe\ kool/Desktop/1 -name "*.docx" -exec mv -f "{}" /Volumes/2\,5/opt/incoming \;

stehen, bzw. wenn man das Shellscript von Applescript auführen lässt:

do shell script
"sudo find /Users/joe\ kool/Desktop/1 -name "*.docx" -exec mv -f "{}" /Volumes/2\,5/opt/incoming \; "
password MEINADMINPASSWORT with administrator privileges

Hier bleibt Applescript bei den Pfaden hängen (wenn ich die root- Rechte vorher per Terminal erteilt habe). Wenn ich einen der beiden Ordner per Drag&Drop in applescript ziehe, bekomme ich einen anderen Pfad, im Falle des Quellordners z.B:

/Users/joe kool/Desktop/1

statt

/Users/joe\ kool/Desktop/1

Applescript bleibt aber auch hier bei den Pfaden hängen (Leerzeichen).
Habe das Gefühl, dass ich mich ein bisschen blöde anstelle, aber ich weiß nicht, was ich falsch mache - bin dankbar für jede Hilfestellung!

Grüße,
Joe
 
Zuletzt bearbeitet:

Pill

Adams Parmäne
Registriert
07.07.12
Beiträge
1.310
Du bist schon fast am Ziel :)

Wie du bemerkt hast, muss man in der Shell Sonderzeichen (wie z.B. das Leerzeichen) mit einem Backslash maskieren. Dasselbe gilt auch für AppleScript, nur dass es hier andere Zeichen sind, die maskiert werden müssen.

Dazu gehört z.B. der Backslash, der mit einem weiteren Backslash maskiert werden muss, oder die Anführungszeichen, die sonst als Ende des do-shell-script-Befehls interpretiert werden würde. Korrekt maskiert sieht der Befehl so aus:

do shell script "sudo find /Users/joe\\ kool/Desktop/1 -name \"*.docx\" -exec mv -f \"{}\" /Volumes/2\\,5/opt/incoming \\; "

Alternativ kann man auch ganze Pfade mit einem einfachen Anführungszeichen ( ' ) maskieren, das macht es etwas übersichtlicher und man spart sich die doppelte Maskierung:

do shell script "sudo find '/Users/joe kool/Desktop/1' -name '*.docx' -exec mv -f '{}' '/Volumes/2,5/opt/incoming' \\; "
 
  • Like
Reaktionen: joe kool

joe kool

Morgenduft
Registriert
29.09.11
Beiträge
165
Ach, das ist doch schön :) Muss jetzt leider kurz was arbeiten, aber wenn sich eine Pause ergibt, werde ich das direkt austesten.

Vielen Dank für die Hilfe!

Grüße,
Joe


Edit: Geht wunderbar - juche`!
 
Zuletzt bearbeitet: