# Syntaxe Applescript ?



## benzorg (25 Mars 2005)

Bonjour,

J'essaye de chmoder des fichiers et repertoire via un script Applescript.

voici donc mon script :

tell application "Terminal"
	do script "chmod 666 /Library/Apache2/htdocs/Guppy/data/archive/*"
	do script "chmod 777 /Library/Apache2/htdocs/Guppy/data/archive"
	do script "chmod 666 /Library/Apache2/htdocs/Guppy/data/cache/*"
	do script "chmod 777 /Library/Apache2/htdocs/Guppy/data/cache"
	do script "chmod 666 /Library/Apache2/htdocs/Guppy/data/usermsg/*"
	do script "chmod 777 /Library/Apache2/htdocs/Guppy/data/usermsg"
	do script "chmod 666 /Library/Apache2/htdocs/Guppy/data/*"
	do script "chmod 777 /Library/Apache2/htdocs/Guppy/data"
	do script "chmod 666 /Library/Apache2/htdocs/Guppy/admin/mdp.php"
	do script "chmod 666 /Library/Apache2/htdocs/Guppy/admin/action.php"
	do script "chmod 777 /Library/Apache2/htdocs/Guppy/data/countmsg"
	do script "chmod 666 /Library/Apache2/htdocs/Guppy/data/countmsg/"
end tell

première question : la syntaxe est elle correct, n'y a t'il pas une manière plus élégante pour obtenir le même résultat?
y'a t'il un moyen d'éviter qu'il m'ouvre dix  fenêtre terminal (une pour chaque ligne) ???

J'aurais aimé lancer ce script en mode invisible via la commande : set visible of window to false
mais j'obtiens l'erreur suivante : Impossible de régler visible of window à false.
quelqu'un peu t 'il m'expliquer mon erreur ???

J'ai beaucoup de mal à comprendre les bibliothéques d'Applescript, ce n'est pas très explicite...

cordialement

benoit


----------



## FredoMkb (25 Mars 2005)

Salut 


			
				benzorg a dit:
			
		

> a syntaxe est elle correct, n'y a t'il pas une manière plus élégante pour obtenir le même résultat?
> y'a t'il un moyen d'éviter qu'il m'ouvre dix  fenêtre terminal (une pour chaque ligne) ???


La syntaxe est correcte, mais on peut en effet arriver au même résultat par d'autres moyens...
On peut tout-à-fait lancer un script sans ouvrir le Terminal, en utilisant la commande "do shell script", voici donc une piste, mais il y en a bien d'autres à explorer :



> set MesCommandes to {"chmod 666 /Library/Apache2/htdocs/Guppy/data/archive/*", "chmod 777 /Library/Apache2/htdocs/Guppy/data/archive", "chmod 666 /Library/Apache2/htdocs/Guppy/data/cache/*", "chmod 777 /Library/Apache2/htdocs/Guppy/data/cache", "chmod 666 /Library/Apache2/htdocs/Guppy/data/usermsg/*", "chmod 777 /Library/Apache2/htdocs/Guppy/data/usermsg", "chmod 666 /Library/Apache2/htdocs/Guppy/data/*", "chmod 777 /Library/Apache2/htdocs/Guppy/data", "chmod 666 /Library/Apache2/htdocs/Guppy/admin/mdp.php", "chmod 666 /Library/Apache2/htdocs/Guppy/admin/action.php", "chmod 777 /Library/Apache2/htdocs/Guppy/data/countmsg", "chmod 666 /Library/Apache2/htdocs/Guppy/data/countmsg/"}
> 
> repeat with MaCommande in MesCommandes
> do shell script MaCommande
> end repeat


Explication :
On commence par mettre les différentes commandes du Terminal dans une variable "MesCommandes" de type liste (chaque élément est séparé de l'autre par une virgule).
Puis, on lance une boucle "repeat" qui va considérer chaque élément de la variable liste "MesCommandes" et la placer dans une variable contextuelle "MaCommande".
Enfin, à l'intérieur de la boucle, on met une seul instruction "do shell script" avec comme argument la variable contextuelle "MaCommande"...

Voilô  j'espère que ce n'est pas trop confus...
a+ 

[Edit]
Si tu souhaites apprendre et comprendre un peu mieux les différentes syntaxes utilisables avec AppleScript, je te conseil d'aller faire un tour par ici : AppleScript de A à Z 
[/Edit]


----------



## benzorg (26 Mars 2005)

Merci FredoMikb pour ces précisions...

Ton script et tes explications sont très claires.

Par contre, je n'utilise pas "do shell script", mais "do script"

Par contre, je ne comprend pas sur certaines lignes j'obtiens systématiquement un "permission denied" :

chmod 666 /Library/Apache2/htdocs/Guppy/admin/action.php
chmod 666 /Library/Apache2/htdocs/Guppy/admin/mdp.php

Qu'est ce qui m'empêche de modifier les droits de ces fichiers ???

et sur certaines autres comme :
chmod 666 /Library/Apache2/htdocs/Guppy/data/archive/*
chmod 666 /Library/Apache2/htdocs/Guppy/data/cache/*
chmod 666 /Library/Apache2/htdocs/Guppy/data/usermsg/*
l'erreur permission denied n'est pas systémathique ????

Est ce une question de délai trop court ? Pourquoi certaines fois elles passent et d'autres elles se bloquent ???

Pourriez vous m'éclairer sur ces points

cordialement

benoit


----------



## FredoMkb (26 Mars 2005)

Salut


			
				benzorg a dit:
			
		

> Qu'est ce qui m'empêche de modifier les droits de ces fichiers ???
> Est ce une question de délai trop court ?
> Pourquoi certaines fois elles passent et d'autres elles se bloquent ???


Bon, là j'avoue ne pas pouvoir t'aider, je ne suis vraiment pas compétant sur ces questions...
J'espère que quelqu'un pourra t'aider...

a+


----------



## benzorg (26 Mars 2005)

merci quand même 

les ames qui pourront m'aider sont les binvenues... 

benoit


----------



## benzorg (28 Mars 2005)

Yes, c'est bon, j'ai trouvé la solution (enfin, une solution...) je sais pas si c'est la plus élégante, mais bon ça fonctionne 

j'ai moifié quelque peu mon script afin d'éviter le erreurs  passagères.
j'ai séparé les chmods 777 et 666 :


```
tell application "Terminal"
	
	--chmods des dossiers en 777
	set MesCommandes to {"chmod 777 /Library/Apache2/htdocs/Guppy/data/archive", "chmod 777 /Library/Apache2/htdocs/Guppy/data/cache", "chmod 777 /Library/Apache2/htdocs/Guppy/data/usermsg", "chmod 777 /Library/Apache2/htdocs/Guppy/data", "chmod 777 /Library/Apache2/htdocs/Guppy/data/countmsg", "chmod 777 /Library/Apache2/htdocs/Guppy/admin"}
	
	repeat with MaCommande in MesCommandes
		do script MaCommande
	end repeat
	
	--chmods du contenus des dossiers en 666
	set MesCommandes2 to {"chmod 666 /Library/Apache2/htdocs/Guppy/data/archive/*", "chmod 666 /Library/Apache2/htdocs/Guppy/data/cache/*", "chmod 666 /Library/Apache2/htdocs/Guppy/data/usermsg/*", "chmod 666 /Library/Apache2/htdocs/Guppy/data/*", "chmod 666 /Library/Apache2/htdocs/Guppy/admin/mdp.php", "chmod 666 /Library/Apache2/htdocs/Guppy/admin/action.php", "chmod 666 /Library/Apache2/htdocs/Guppy/data/countmsg/"}
	
	repeat with MaCommande2 in MesCommandes2
		do script MaCommande2
	end repeat
	
	
end tell
```

hop, un petit tour de passe-passe  et voilà ! mais pour résoudre les erreurs sur action.php et sur mdp.php, j'ai dû chmoder mon dossier conteneur "admin" en 777 ???
il faut que je regarde si ça ne pose pas de soucis de sécurité, mais bon, c'est prévu pour tourner en local, je crois pas que je vais me hacker mon site moi-même... (enfin, on ne sait jamais, un dédoublement de personalité     )

merci encore pour votre aide, et si vous avez des commentaires ou des remarques, n'hésitez pas, je suis toujours preneur

cordialement

benoit


----------

