AppleScript + action de dosssier, pour changer les permissions |
Bienvenue invité ( Connexion | Inscription )
AppleScript + action de dosssier, pour changer les permissions |
25 Jun 2010, 16:39
Message
#1
|
|
Macbidouilleur de vermeil ! Groupe : Membres Messages : 1 078 Inscrit : 18 Oct 2005 Lieu : 35-Bretagne Membre no 48 141 |
Bon, après pas mal de recherches et d'essais, j'ose tenter la question :
J'ai un dossier sur mon bureau que j'ai partagé et qui sert à ce que "mon petit groupe" (3 ou 4 Macs) me passe tout un tas de fichiers et dossiers pour validation. Chaque fois que quelqu'un y place quelque chose, j'ai seulement un droit en lecture seule, et ça me "bassine" de faire un Pomme+"i" et de changer les autorisations à chaue fois. Donc j'aimerais une petite action de dossier qui, chaque fois que quelques chose est placé dans ce dossier, en change les permissions (fichiers, dossiers et sous-dossiers) pour que j'ai les droits en lecture ET en écriture ... Mais rien de ce que j'essaie ne fonctionne ... et j'en ai essayé ! Un p'tit coup de main ? Merci ! |
|
|
Guest_EricaL**_* |
26 Jun 2010, 01:26
Message
#2
|
Guests |
Bonjour,
Un launchAgent est mieux qu'une action de dossier. Voici comment faire : Copie et colle ce texte dans TextEdit. Code <?xml version="1.0" encoding="UTF-8"?> Modifie le chemin du dossier au deux endroits, glisse et dépose le dossier dans la fenêtre pour avoir le chemin exact (pas les noms localisés).<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key> <string>Permissions</string> <key>ProgramArguments</key> <array> <string>/bin/chmod</string> <string>-R</string> <string>u=rw+X</string> <string>/Users/toi/Desktop/dossier sans titre 3</string> </array> <key>RunAtLoad</key> <true/> <key>WatchPaths</key> <array> <string>/Users/toi/Desktop/dossier sans titre 3</string> </array> <key>onDemand</key> <true/> </dict> </plist> Enregistre-le dans le format "unicode texte (utf-8)", avec l'extension ".plist" le nom (n'importe lequel), dans le dossier "Bibliothèque/LaunchAgents/" de ta maison. Après copie et colle ce code dans l'application "Terminal" pour lancer l'agent : Code launchctl load ~/Library/LaunchAgents/ Presse la touche EntréeAprès, il sera automatiquement lancé à l'ouverture de ta session. Ce message a été modifié par EricaL** - 26 Jun 2010, 01:31. |
|
|
26 Jun 2010, 09:39
Message
#3
|
|
Macbidouilleur de vermeil ! Groupe : Membres Messages : 1 078 Inscrit : 18 Oct 2005 Lieu : 35-Bretagne Membre no 48 141 |
Wahou !! un grand merci, je test ça ce WE ...
|
|
|
28 Jun 2010, 09:30
Message
#4
|
|
Macbidouilleur de vermeil ! Groupe : Membres Messages : 1 078 Inscrit : 18 Oct 2005 Lieu : 35-Bretagne Membre no 48 141 |
Ben ... ça marche pas !
Tous les fichiers/dossiers glissés dans le dossier sur mon bureau, prennent les permissions : nobody = rw (inconnu) = r everyone = r et c'est tout ... donc impossible pour (moi) d'écraser les fichiers ! |
|
|
Guest_EricaL**_* |
28 Jun 2010, 19:47
Message
#5
|
Guests |
La commande modifie la lecture et écriture du propriétaire (nobody) des fichiers, ça n'ajoute pas un utilisateur.
Essaie avec ce paramètre "lecture et écriture" pour tout le monde. Code ugo=rw+X à la place de u=rw+XAprès pour que l'agent soit mis à jour : - Dans le terminal Code launchctl unload ~/Library/LaunchAgents/ Presse la touche EntréeCode launchctl load ~/Library/LaunchAgents/ Presse la touche Entrée
|
|
|
29 Jun 2010, 09:44
Message
#6
|
|
Macbidouilleur de vermeil ! Groupe : Membres Messages : 1 078 Inscrit : 18 Oct 2005 Lieu : 35-Bretagne Membre no 48 141 |
Super ! Merci !
Cette fois ça fonctionne "pile poil". Je peux modifier sans les déplacer les fichiers qu'on me transmets ... juste ce que je souhaitais |
|
|
15 Oct 2010, 17:19
Message
#7
|
|
Adepte de Macbidouille Groupe : Membres Messages : 101 Inscrit : 3 Nov 2003 Lieu : LYON Membre no 11 261 |
Alors, là... Un grand grand merci !!!
Je cherchais une solution a un problème très similaire. Je vais tester la semaine prochaine... enfin dès que j'aurais un peu de temps. Juste une petite question complémentaire : si je veux faire cela sur plusieurs dossiers, est-ce qu'il suffit de faire autant de fichiers plist que de dossiers à traiter ? Allez, deux petites dernières : est-ce que cela fonctionne sur des dossiers et des sous-dossiers inclus (a priori, je dirai que oui) ? est-ce que les modifications de permissions sont instantanées (je ne connais pas le principe des Launch Agent) ? Et encore une fois, merci... J'avais bien eu l'idée de cette solution, mais j'étais incapable de la mettre en oeuvre... -------------------- Mac Pro 3,1 (bientôt un 5,1) - MacBook Pro Retina 2014 - iPhone 7
|
|
|
Guest_EricaL**_* |
15 Oct 2010, 17:33
Message
#8
|
Guests |
Bonjour,
si je veux faire cela sur plusieurs dossiers, est-ce qu'il suffit de faire autant de fichiers plist que de dossiers à traiter ? OuiAllez, deux petites dernières : est-ce que cela fonctionne sur des dossiers et des sous-dossiers inclus (a priori, je dirai que oui) ? Oui, il modifie les permissions de tous les éléments.Non, si on ajoute un fichier dans un sous-dossier, c'est à dire que le script s'exécute lors d'un ajout ou modification dans le dossier maître, pas dans un sous-dossier est-ce que les modifications de permissions sont instantanées ? Oui
Ce message a été modifié par EricaL** - 15 Oct 2010, 17:34. |
|
|
15 Oct 2010, 17:50
Message
#9
|
|
Adepte de Macbidouille Groupe : Membres Messages : 101 Inscrit : 3 Nov 2003 Lieu : LYON Membre no 11 261 |
Merci pour tes réponses rapides.
Comme déjà dit, je testerai dès que possible... Mais cela me semble bien correspondre à ma problématique. -------------------- Mac Pro 3,1 (bientôt un 5,1) - MacBook Pro Retina 2014 - iPhone 7
|
|
|
29 Nov 2010, 16:14
Message
#10
|
|
Adepte de Macbidouille Groupe : Membres Messages : 101 Inscrit : 3 Nov 2003 Lieu : LYON Membre no 11 261 |
Bon, me revoilà, plus d'un mois après. J'ai enfin pris le temps de tester...
Malheureusement, cela ne fonctionne pas. Lorsque je lance l'agent dans le terminal, il me donne le message : launchctl: no plist was returned for: /Users/Claude/Library/LaunchAgents//permission.public.claude.plist Où aurais-je fait une erreur ? Merci. -------------------- Mac Pro 3,1 (bientôt un 5,1) - MacBook Pro Retina 2014 - iPhone 7
|
|
|
Guest_EricaL**_* |
29 Nov 2010, 18:54
Message
#11
|
Guests |
il me donne le message : launchctl: no plist was returned for: /Users/Claude/Library/LaunchAgents//permission.public.claude.plist C'est ton format qui n'est pas correct. Meme si tu le converti ton fichier au format texte, il ne fonctionnera pas Suppime ton fichier plist Ouvre TextEdit Il faut que ta fenêtre TextEdit soit vide Sélectionne dans le menu "Fomat" --> "Convertir au format texte" Colle le texte du plist Après avoir copié le chemin de ton dossier dans le texte , enregistre-le au format "Unicode (UTF-8)" |
|
|
18 Aug 2011, 14:45
Message
#12
|
|
Nouveau Membre Groupe : Membres Messages : 6 Inscrit : 18 Aug 2011 Membre no 169 842 |
Bonjour,
Merci à EricaL** pour cette description, c'est très clair est vraiment efficace! Cependant, serait-il possible de modifier les autorisations des fichiers placés/créés/déplacés dans un sous dossier du dossier maître? Je cherche sur la toile depuis quelques temps et je ne trouve pas de réponse à ce problème. Comment donner un "écouteur" à un sous dossier pour qu'il puisse agir comme le dossier maître...? Merci par avance et bonne continuation. |
|
|
Guest_EricaL**_* |
18 Aug 2011, 16:13
Message
#13
|
Guests |
Bonjour,
Cependant, serait-il possible de modifier les autorisations des fichiers placés/créés/déplacés dans un sous dossier du dossier maître? Oui, vous pouvez ajouter des chemins de sous dossier après la clé "WatchPaths" Exemple : Code <key>WatchPaths</key>
<array> <string>/Users/toi/Desktop/dossierA</string> <string>/Users/toi/Desktop/dossierA/sousDossierA</string> <string>/Users/toi/Desktop/dossierA/sousDossierB/sous-sousDossierB</string> </array> |
|
|
18 Aug 2011, 19:23
Message
#14
|
|
Nouveau Membre Groupe : Membres Messages : 6 Inscrit : 18 Aug 2011 Membre no 169 842 |
Bonjour EricaL** et merci pour cette réponse!
J'avais compris que l'on pouvait en rajouter "à la main" mais je me demandais plutôt si il n'était pas possible que cet action soit faite automatiquement... Je travaille avec 2 autres "mac users" et nous utilisons le dossier "Public" d'une des machines pour échanger nos fichiers. Le problème avec la solution que vous proposez (qui est pour le moment la meilleure que j'ai trouvée sur la toile) c'est qu'il faut faire passer les fichiers par une sorte de "sas de réorganisation des autorisations" (soit le dossier maître). C'est déjà plutôt pratique mais nous sommes amenés régulièrement à modifier ou à créer des dossiers/fichiers directement dans des sous dossiers du dossier maître (dossier "Public" de la machine principal)... et c'est là que ça pose problème car ces nouveaux dossiers/fichiers ne tiennent pas compte des réglages des dossiers parents. Je me demandais donc si il était possible de créer un "écouteur de modification" sur chaque sous dossier et ce de manière automatique. Dès qu'un dossier/fichier est créé, il est automatiquement rajouter à la liste du fichier "launchAgent" et inversement si il est supprimé. Pour le moment, nous utilisons votre méthode (launchAgent) sur le dossier principal (Public), et ceci nous fait déjà gagner du temps! Pour les dossiers/fichiers créés directement dans les sous dossier du dossier "Public" nous utilisons un petit appleScript qui applique les réglages d'autorisations d'accès à des groupes de fichiers. Ceci évite de faire "pomme+i>changer les autorisations>entrer son password>appliquer aux éléments inclus" toute la journée... Si vous avez une meilleure solution, une idée, un conseil de quoi chercher, je suis preneur! Merci par avance et bonne soirée. |
|
|
Guest_EricaL**_* |
21 Aug 2011, 00:20
Message
#15
|
Guests |
Bonsoir,
Je me demandais donc si il était possible de créer un "écouteur de modification" sur chaque sous dossier et ce de manière automatique. Dès qu'un dossier/fichier est créé, il est automatiquement rajouter à la liste du fichier "launchAgent" et inversement si il est supprimé. Oui, c'est possible. Ici, ça fonctionne bien, testé sur 150 à 200 sous dossiers, la réaction est instantanée lorsqu'un ou plusieurs fichiers ou dossiers sont déposés. Je n'ai aucune idée de la réaction du système sur plus de 500 sous dossiers dans un fichier Plist S'il faut modifier le fichier PLIST lors d'un ajout de dossier ou lors de la suppression d'un dossier, il y a un délai de six secondes (plus ou moins obligatoire pour ne pas avoir de problème avec launchD), mais ce n'est pas grave, car il corrige les permissions après la modification du fichier PLIST, donc aucun problème s'il y a d'autres ajouts pendant ces six secondes. Edition : J'avais oublié d'écrire que deux fichiers invisibles (".old_all_Folders.txt" ".all_Folders.txt") seront créées dans le dossier Utilisateur. ils sont nécessaire pour la vérification des sous dossiers ajoutés ou supprimés, il est obligatoire que ces fichiers ne doivent pas être dans le dossier à surveiller, sinon l'exécutable se lancera plus souvent inutilement. Voici la méthode qui fonctionne bien ici. 1- Il faut désactivé le fichier PLIST actuel qui modifie les permissions du dossier Public. Copie/colle ce texte dans le Terminal Code launchctl unload Presse la touche espace.A partir du Finder, glisse et dépose le fichier PLIST (celui qui modifie les permissions) dans la fenêtre du Terminal . Presse la touche Entrée 2- Ouvre le fichier PLIST (celui qui modifie les permissions) dans TextEdit. Copie/colle ce texte dans la fenêtre de TextEdit : Code <?xml version="1.0" encoding="UTF-8"?> Remplace xxxxxx par le nom d'utilisateur aux deux endroits<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Disabled</key> <true/> <key>Label</key> <string>ChangePermissionsDossierPublic</string> <key>ProgramArguments</key> <array> <string>/Users/xxxxxx/Documents/ShellScripts/modifyPermsPublic.sh</string> </array> <key>RunAtLoad</key> <true/> <key>WatchPaths</key> <array> <string>/Users/xxxxxx/Public</string> </array> <key>onDemand</key> <true/> </dict> </plist> Enregistre et ferme-le. Renomme le fichier "permsDossierPublic.plist" 3- Duplique le fichier "permsDossierPublic.plist" Ouvre le fichier dupliqué dans TextEdit Copie/colle ce texte dans la fenêtre de TextEdit : Code <?xml version="1.0" encoding="UTF-8"?> Remplace xxxxxx par le nom d'utilisateur aux deux endroits<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Disabled</key> <true/> <key>Label</key> <string>WatchPlistPermissionsDossierPublic</string> <key>ProgramArguments</key> <array> <string>/Users/xxxxxx/Documents/ShellScripts/modifyPermsPlist.sh</string> </array> <key>RunAtLoad</key> <true/> <key>WatchPaths</key> <array> <string>/Users/xxxxxx/Library/LaunchAgents/permsDossierPublic.plist</string> </array> <key>onDemand</key> <true/> </dict> </plist> Enregistre et ferme-le. Renomme le fichier "watchPermsDossierPublic.plist" 4- Ouvre l'application TextWrangler (c'est gratuit si vous ne l'avez pas), je le préfère à TextEdit, car je me méfie des fins de lignes lors d'un copier à partir d'un navigateur, ils sont important dans un script shell. Copie/colle ce texte dans la fenêtre de TextWrangler : Code #!/bin/bash Enregistre-le, le nom sera "modifyPermsPublic.sh", sélectionne "Unix (LF)" dans le popup Lines Break, sélectionne "Unicode (UTF-8)" dans le popup Encoding, son emplacement sera le dossier "ShellScripts" dans votre dossier "Documents"masterFolder="/Users/xxxxxx/Public" ## ici c'est le chemin du dossier a surveiller sleep 1 /bin/chmod -R ugo=rw+X "$masterFolder" /usr/bin/find "$masterFolder" -type d \! -path "*.app/*" \! -name "*.app" -print > ~/.all_Folders.txt; /usr/bin/touch ~/.old_all_Folders.txt var1=$(/usr/bin/diff -a --changed-group-format="%>%<" --unchanged-line-format="" ~/.old_all_Folders.txt ~/.all_Folders.txt); if [ -n "$var1" ]; then ## nouveaux dossiers ou dossiers supprimés /bin/launchctl unload -w ~/Library/LaunchAgents/permsDossierPublic.plist fi Ferme le document. 4.1- Nouveau document Copie/colle ce texte dans la fenêtre de TextWrangler : Code #!/bin/bash Enregistre-le, le nom sera "modifyPermsPlist.sh", sélectionne "Unix (LF)" dans le popup Lines Break, sélectionne "Unicode (UTF-8)" dans le popup Encoding, son emplacement sera le dossier "ShellScripts" dans le dossier "Documents"disabled=$(defaults read ~/Library/LaunchAgents/permsDossierPublic Disabled); if [ $disabled == 1 ]; then var1=`/usr/bin/sed -e :a -e '$!N;s/\n/\", \"/g;ta' ~/.all_Folders.txt` sleep 6 /usr/bin/defaults write ~/Library/LaunchAgents/permsDossierPublic WatchPaths "(\"$var1\")" sleep 1 /bin/launchctl load -w ~/Library/LaunchAgents/permsDossierPublic.plist /bin/mv -f ~/.all_Folders.txt ~/.old_all_Folders.txt fi Ferme le document. 5- Ouvre l'application Terminal Ceci est nécessaire pour que les scripts soient des exécutables. Copie/colle ce texte dans la fenêtre du Terminal : Code chmod u+x ~/Documents/ShellScripts/modifyPermsPublic.sh ~/Documents/ShellScripts/modifyPermsPlist.sh Presse la touche Entrée. 6- active les PLIST, voir la commande en bas de ce message C'est tout. ------------ Si j'impose les noms de fichiers et les emplacements, c'est pour que vous ayez le moins de modifications à faire dans les fichiers Plist et surtout (les scripts shell et les commandes Terminal) car les espaces et certains caractères réservés (dans les noms des scripts) nécessitent des connaissances pour que ça fonctionne sans erreurs. Pourquoi deux fichiers PLIST ? C'est pour que le système prenne en compte les modifications dans le fichier "permsDossierPublic.plist", car il faut desactiver.le fichier "permsDossierPublic.plist". Lors de la désactivation l'exécutable (le script shell) s'arrête automatiquement, donc il ne peut pas modifier le fichier "permsDossierPublic.plist", il faut le faire par une autre exécutable. Si un dossier s'ajoute ou un dossier est supprimé, l'exécutable désactive le fichier "permsDossierPublic.plist" et lui même. Donc la date de modification du fichier "permsDossierPublic.plist" sera changé, le fichier "watchPermsDossierPublic.plist" lancera son exécutable, il ajoutera ou enlèvera les chemins de sous dossiers dans le fichier "permsDossierPublic.plist" et il le réactivera . Voici la commande Terminal pour désactiver les PLIST en cas de modification d'un des fichiers PLIST, nouvel emplacement du dossier Public ou son nom par exemple. Code launchctl unload -w ~/Library/LaunchAgents/watchPermsDossierPublic.plist ~/Library/LaunchAgents/permsDossierPublic.plist Voici la commande Terminal pour activer les PLIST Code launchctl load -w ~/Library/LaunchAgents/watchPermsDossierPublic.plist Un seul chemin est nécessaire parce celui la active l'autre PLIST L'oprion -w est nécessaire (il écrit ou enlève la clé "Disabled" dans le plist), le script shell vérifie cette valeur. Ce message a été modifié par EricaL** - 21 Aug 2011, 00:51. |
|
|
22 Aug 2011, 12:52
Message
#16
|
|
Nouveau Membre Groupe : Membres Messages : 6 Inscrit : 18 Aug 2011 Membre no 169 842 |
Bonjour EricaL**,
Je tiens vraiment à te remercier d'avoir pris le temps de répondre à mes questions. Ton explication est parfaite, clair, nette et précise. À mon avis cela va dépanner plus d'un "mac user"! Cependant, j'ai un soucis... J'ai fait exactement ce que tu as décrit. Après avoir placé les fichiers au bon emplacement et lancé les lignes de commande avec le terminal j'ai fait quelques tests sur le dossier "Public". Les premiers fichiers/dossiers que j'ai glissé/déposé dans le dossier "Public" ont bien été modifiés (y compris les fichiers disposés dans des sous dossiers). Ensuite, j'ai tenté de créer directement un dossier à la racine du dossier "Public". Clique-droit dans le dossier "Public" > nouveau dossier. Là, le dossier n'a pas pris les bonnes autorisations. J'ai attendu quelque minutes, et toujours rien. Je l'ai sorti du dossier "Public" puis remis dedans, toujours rien. J'ai également tenté de créer un dossier dans un sous dossier du dossier "Public". De même, il n'a pas pris les bonne autorisations. Je me suis dit que j'avais du faire une erreur alors j'ai repris ton tuto depuis le début. Nouveau test, même problème. Dès qu'un dossier et créé directement dans le dossier (ou sous dossier) "Public", les modifications d'autorisations ne sont plus exécutées. Comme si les scripts étaient désactivés... J'ai voulu encore une fois tout reprendre et lorsque j'ai voulu "unloader" les fichiers .plist j'ai obtenu le message d'erreur suivant de la part du terminal : Code iMac-de-Moi:~ moi$ launchctl unload -w ~/Library/LaunchAgents/watchPermsDossierPublic.plist ~/Library/LaunchAgents/permsDossierPublic.plist launchctl: Error unloading: ChangePermissionsDossierPublic J'ai tenté un "unload" sur tout le dossier "LauchAgents" et j'ai obtenu le même message d'erreur pour chacun des fichiers contenu dans le dossier "/Library/LaunchAgents/". Là, je suis un peu perdu car je ne suis pas vraiment familier avec le terminal et ce genre de manipulation... Je ne voudrais pas faire de mauvaises manipulations vu la puissance de l'outil. Si tu as encore un peu de temps à m'accorder, aurais-tu un conseil à me donner? Un truc en particulier à vérifier? Merci par avance et chapeau pour ton tuto! |
|
|
Guest_EricaL**_* |
22 Aug 2011, 18:06
Message
#17
|
Guests |
Bonjour,
Premièrement, on réactive le dossier Code launchctl load ~/Library/LaunchAgents/ Désactive les PLIST concernée Code launchctl unload -w ~/Library/LaunchAgents/watchPermsDossierPublic.plist ~/Library/LaunchAgents/permsDossierPublic.plist J'ai voulu encore une fois tout reprendre et lorsque j'ai voulu "unloader" les fichiers .plist j'ai obtenu le message d'erreur suivant de la part du terminal : Code iMac-de-Moi:~ moi$ launchctl unload -w ~/Library/LaunchAgents/watchPermsDossierPublic.plist ~/Library/LaunchAgents/permsDossierPublic.plist launchctl: Error unloading: ChangePermissionsDossierPublic Le fichier permsDossierPublic.plist était déjà désactivé. il m'a fallu quelque temps pour ajuster les délais pour que ça fonctionne sans problème, car le plist restait désactivé. Cela dépend de la vitesse des machines, de l'OS et de la réaction de launchD 1- Code launchctl unload -w ~/Library/LaunchAgents/watchPermsDossierPublic.plist ~/Library/LaunchAgents/permsDossierPublic.plist 2- Ouvre les shell scripts dans TextEdit Augmente le temps des sleep (aux 3 endroits) dans les shell scripts. Par exemple : sleep 1 par sleep 2 Tu peux essayer : sleep 0 pour voir si c'est mieux. Tu peux essayer de modifier un sleep à la fois ou les trois en même temps Enregistre 3- Active le plist Code launchctl load -w launchctl load -w ~/Library/LaunchAgents/watchPermsDossierPublic.plist Répète les points 1, 2 et 3 jusqu'à tant que le fichier "permsDossierPublic.plist" se réactive automatiquement sans arrêt dans toute une journée. Pour savoir s'il est désactivé, ouvre le fichier "permsDossierPublic.plist" dans TextEdit Code <dict> <key>Disabled</key> <true/> <key>Label</key> <key>Disabled</key> sera présent dans le texte du fichier, sinon il est activé Ce message a été modifié par EricaL** - 22 Aug 2011, 18:22. |
|
|
23 Aug 2011, 10:39
Message
#18
|
|
Nouveau Membre Groupe : Membres Messages : 6 Inscrit : 18 Aug 2011 Membre no 169 842 |
Bonjour EricaL** et encore merci pour ta réponse.
Je suis un peu paumé là... Quand je demande de "reloader" le dossier "LaunchAgents" via le terminal j'obtiens ce message d'erreur : Code iMac-de-Moi:~ Moi$ launchctl load ~/Library/LaunchAgents/ nothing found to load Si je lance un "unload" j'obtiens le même message qu'hier : Code iMac-de-Moi:~ Moi$ launchctl unload -w ~/Library/LaunchAgents/ launchctl: Error unloading: com.adobe.AAM.Scheduler-1.0 launchctl: Error unloading: com.apple.FolderActions.enabled launchctl: Error unloading: com.apple.FolderActions.folders launchctl: Error unloading: ChangePermissionsDossierPublic launchctl: Error unloading: WatchPlistPermissionsDossierPublic J'ai cherché sur le net à quoi correspondait l'erreur "nothing found to load" mais cela ne m'aide pas à régler le soucis. Il y a pourtant bien des éléments à "loader" puisqu'il y a plusieurs fichier "plist" dedans. J'ai lu quelque part qu'il fallait vérifier le format XML des fichiers "plist", c'est ce que j'ai fait (avec textEdit au format Texte), je les ai réécrits mais cela n'a rien changé. Que vaut-il mieux faire à présent? Y a t-il un moyen de réinitialiser ce dossier "LaunchAgents" via le terminal pour repartir sur de bonne base? Merci par avance pour ton aide! |
|
|
Guest_EricaL**_* |
24 Aug 2011, 00:25
Message
#19
|
Guests |
Bonsoir,
Bonjour EricaL** et encore merci pour ta réponse. Cette erreur survient parce que l'option -w à été utilisé pour tous désactivés les plist.Je suis un peu paumé là... Quand je demande de "reloader" le dossier "LaunchAgents" via le terminal j'obtiens ce message d'erreur : Code iMac-de-Moi:~ Moi$ launchctl load ~/Library/LaunchAgents/ nothing found to load Donc il faudra toujours utilisé l'option -w lors de l'activation. Cette commande Code launchctl load -w ~/Library/LaunchAgents/ fonctionnera sans erreur.Après, cette commande : Code launchctl unload -w ~/Library/LaunchAgents/ fonctionnera sans erreur, sauf si un des fichiers est déjà désactivé, dans ce cas tu sauras lequel est déjà désactivé Error unloading .......Si je lance un "unload" j'obtiens le même message qu'hier : C'est qu'il sont déjà tous désactivés.
[code]iMac-de-Moi:~ Moi$ launchctl unload -w ~/Library/LaunchAgents/ launchctl: Error unloading: com.adobe.AAM.Scheduler-1.0 Ce message a été modifié par EricaL** - 24 Aug 2011, 00:25. |
|
|
24 Aug 2011, 11:52
Message
#20
|
|
Nouveau Membre Groupe : Membres Messages : 6 Inscrit : 18 Aug 2011 Membre no 169 842 |
Bonjour EricaL** et merci pour tes réponses plus que précises!
Effectivement ton indication sur la commande load et unload avec le paramètre -w était juste. Cependant, je commence un peu à désespérer. J'ai suivi ton exemple à la lettre mais la machine n'en fait qu'a sa tête. Citation Répète les points 1, 2 et 3 jusqu'à tant que le fichier "permsDossierPublic.plist" se réactive automatiquement sans arrêt dans toute une journée. J'ai modifié les "sleep" des fichiers shell à multiples reprises. J'ai tenté plusieurs choses : 1 - Tous les "sleep" à 0, puis tous à 1, puis tous à 2, etc, jusqu'à 10. 2 - Le premier "sleep" à 0, le second à 1, le dernier à 2 puis ensuite le premier "sleep" à 1, le second à 2, le dernier à 3 jusqu'à 10. 3 - Puis le premier "sleep" à 1, le second à 0, le dernier à 2 puis le premier "sleep" à 2, le second à 1, le dernier à 3, etc... 4 - Et enfin le premier à 2, le second à 1, le dernier à 0, etc... Vu que je ne connais pas vraiment les commandes shell, j'incrémente les valeurs de "sleep" sans comprendre à quoi elles vont servir ce qui ne facilite pas la tache et la compréhension du comportement de la machine. Tous les test ont donnés le même résultat. Lorsque je "load" le "plist", le script est bien exécuté et les autorisations de tout le contenu du dossier "Public" sont modifiés. Ensuite cela continu de fonctionner quelques secondes mais cela semble bien aléatoire car en faisant plusieurs tests avec les même valeur de "sleep" le comportement est différent. Au bout d'une dizaine de secondes les autorisations de dossier ne sont plus modifiés... De plus, la ligne <key>Disabled</key> est tout le temps visible dans le fichier permsDossierPublic.plist. J'ai remarqué dans les fichiers shell que le chemin utilisé pour récupérer des variables n'était pas toujours le même... Je ne sais pas si cela peut changer quelque chose? Par exemple "/usr/" et parfois utilisé devant "/bin/..." et parfois pas (cette remarque te montre à quel point je m'y connais! ) Au niveau des "sleep", jusqu'à combien puis-je incrémenter les valeurs? Quel est le comportement d'un "sleep" au juste? Y aurait t-il quelque chose d'essentiel que je devrais vérifier/tester sur ma machine?? Je vais continuer à faire des tests et des recherches en espérant trouver quelque chose! Encore merci à toi. |
|
|
Guest_EricaL**_* |
24 Aug 2011, 16:07
Message
#21
|
Guests |
Bonjour,
Bonjour EricaL** et merci pour tes réponses plus que précises! Effectivement ton indication sur la commande load et unload avec le paramètre -w était juste. J'ai remarqué dans les fichiers shell que le chemin utilisé pour récupérer des variables n'était pas toujours le même... Je ne sais pas si cela peut changer quelque chose? Par exemple "/usr/" et parfois utilisé devant "/bin/..." et parfois pas (cette remarque te montre à quel point je m'y connais! ) C'est normal, les chemins des exécutables ne sont pas tous aux mêmes endroits, les dossiers sont en général: (/usr/bin/, /usr/sbin/, /bin/, /sbin/, /usr/local/bin/, /usr/local/sbin/ ) ces dosssier ne sont pas visibles dans le Finder. Il est préférable de mettre le chemin au complet dans un script shell, alors que dans le Terminal ce n'est pas obligatoire pour les exécutables par défaut de OS X Quel est le comportement d'un "sleep" au juste? Cette commande ne fait rien pendant le nombre de secondes indiqué,Exemple : sleep 6 il attendra six secondes avant d'exécuter la prochaine ligne dans le script. --------------- Recommençons avec une nouvelle méthode -- Pour supprimer les anciens fichiers de l'autre méthode Exécute cette commande Code launchctl unload -w ~/Library/LaunchAgents/watchPermsDossierPublic.plist ~/Library/LaunchAgents/permsDossierPublic.plist Supprime le fichier "watchPermsDossierPublic.plist" Supprime les scripts shell ("modifyPermsPlist.sh" et "modifyPermsPublic.sh"). ---- Voici une méthode fiable à 100 %. La commande sera exécutée à intervalle de quatre secondes. Ici, j'ai testé sur 3000 éléments dans le dossier, la commande chmod ne prend pas plus de 1 % sur le processeur quand les permissions des éléments sont déja correct , donc cet intervalle de quatre secondes ne consommera pas de ressources inutilement. 1- Ouvre le fichier "permsDossierPublic.plist" dans TextEdit. Copie/colle ce texte dans la fenêtre de TextEdit : Code <?xml version="1.0" encoding="UTF-8"?> Remplace xxxxxx par le nom d'utilisateur<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Disabled</key> <true/> <key>Label</key> <string>ChangePermissionsDossierPublic</string> <key>ProgramArguments</key> <array> <string>/bin/chmod</string> <string>-R</string> <string>ugo=rw+X</string> <string>/Users/xxxxxx/Public</string> </array> <key>RunAtLoad</key> <true/> <key>StartInterval</key> <integer>4</integer> </dict> </plist> Enregistre et ferme-le. 2- active le fichier "permsDossierPublic.plist" par cette commande du Terminal Code launchctl load -w ~/Library/LaunchAgents/permsDossierPublic.plist C'est tout. Ce message a été modifié par EricaL** - 24 Aug 2011, 16:12. |
|
|
19 Sep 2011, 11:00
Message
#22
|
|
Nouveau Membre Groupe : Membres Messages : 6 Inscrit : 18 Aug 2011 Membre no 169 842 |
Bonjour EricaL**,
Après quelques semaines de tests je reviens sur ce post pour te remercier. La dernière méthode proposée (répéter l'action de modifications des droits à interval régulier) fonctionne très bien. J'aurais bien évidemment préféré qu'il n'y ai pas besoin de passer par StartInterval pour que la machine ne soit pas obligé de répéter l'action de modification des droits quand ce n'est pas nécessaire. Mais au moins cela fonctionne et nous fait gagner du temps! Encore un grand merci pour avoir pris le temps de m'aider. Bonne continuation à toi! |
|
|
7 May 2012, 13:23
Message
#23
|
|
Adepte de Macbidouille Groupe : Membres Messages : 143 Inscrit : 3 Aug 2006 Lieu : Nantes Membre no 65 300 |
J'ai exactement le même problème et je vais donc tenter cette solution, en remerciant son auteur.
J'ai toutefois une question, qui ne remet absolument pas en cause sa solution, mais dont je n'ai pas la réponse. Ne serait-il pas plus simple de scripter le dossier avec un Applescript, pour que tout ce qui tombe dedans prenne automatiquement les bonnes autorisations? Visiblement, l'auteur juge cette solution mauvaise en disant qu'Un launchAgent est mieux qu'une action de dossier, mais je ne comprends pas pourquoi. Dans ma petite tête, je m'étais dit qu'un script de dossier ferait l'affaire. Ce message a été modifié par fregenot - 7 May 2012, 14:32. -------------------- Frédéric MacBook Pro - MacPro |
|
|
31 Mar 2020, 19:00
Message
#24
|
|
Macbidouilleur de vermeil ! Groupe : Membres Messages : 910 Inscrit : 12 Oct 2004 Lieu : Liège.be Membre no 25 088 |
Bonjour à tous,
Je ressort ce sujet des tréfonds du forum MB car je me pose exactement la même question. Voici ma situation: j'ai un scanner réseau qui envoie sur un dossier partagé de mon iMac tous les documents scannés. Mais mon utilisateur n'est pas propriétaire de ces fichiers et n'a pas de droits en écriture. J'aurais voulu un script à inclure dans une action de dossier pour que chaque fichier soit directement corrigé à son arrivée. Est-ce possible? J'ai bien lu qu'un launchagent était mieux selon certains mais de mon côté je redémarre très peu mon mac (une fois toutes les deux semaines), cette solution ne m'arrange donc pas du tout. Merci d'avance à tous les pro du code, de la part d'un bleu. Ce message a été modifié par MacEmbert - 31 Mar 2020, 19:02. -------------------- Je ne croque pas que des pommes, j'aime aussi le Camembert.
iMac 2020, macOS Catalina MacMini C2D 2020, macOS Monterey iPad mini 2, iPad 6 iPhone XS |
|
|
Nous sommes le : 19th April 2024 - 04:15 |