# Applescript + terminal



## vicking (28 Mai 2013)

Bonjour,

je créé mon premier script applescript et je suis bloqué quasiment à la fin de ce que je veux faire.

Situation: je travaille dans une société qui utilise à 99% du mac. Nous avons installons sur chaque machine un compte admin uniquement utilisable par les informaticiens. Nous souhaitons caché ce compte admin et je suis en train de créé le script pour le faire à distance. Ce script demande à l'utilisateur l'IP de l'ordi distant, avec le terminal on y envoi le fichier du script, on créé une connexion ssh, on exécute le script puis on efface le script de l'ordi distant.

Voici le script:



> --affiche une fenêtre de choix
> display dialog "Ce script va cacher le compte admin,voulez vous effectuer ce changement sur un ordinateur distant ou sur cet ordinateur?" buttons {"mac distant", "ce mac", "Annuler"} default button 2
> 
> 
> ...


là où le script déconne c'est à la partie "-- actions si on veut effectuer le script sur un ordinateur distant".

Cette partie demande à l'utilisateur de taper l'adresse IP de l'ordinateur distant. Adresse IP stockée dans la variable result. Au préalable, on à créé une variable haystack contenant le chemin où trouver le fichier du script à copier sur l'ordi distant.
Ensuite, on lance l'appli terminal et on lance 3 commandes qui font appelle à ces 2 variables. Problème, ces variables ont été créées dans le script mais pas dans la session du terminal et donc mes commandes terminal ne les connaissent pas. (la partie posant problème est en rouge)

Quelqu'un connait il une solution à ce problème?


Jespère que j'ai été clair dans mes explications. Merci d'avance à ceux qui se pencheront sur mon problème .


----------



## carlitospsd (18 Juin 2013)

Salut,
il faut insérer les variables dans le do shell script :
par exemple

set machin to quoted form of posix path of file (choose file) -- machin contient le chemin vers un fichier
do shell script "cp " & machin & " ~/Desktop/"


Si tu veux stocker l'ip dans une variable tu fais :

set monIp to text returned of (display dialog "Quel est l'adresse IP de l'ordinateur distant?" default answer "" buttons {"OK"} default button 1)


et donc tu devrais avoir quelque chose dans le genre

do shell script "scp -r haystack admin@" & monIp & ":/Users/admin/Desktop/" -- si haystack est une variable applescript il faut la sortir :  "scp -r " & haystack & " admin@"  (attention à ne pas oublier les espaces avant/après)
do shell script "ssh admin@" & monIp
do shell script "osascript -l /Users/admin/Desktop/adminhidercomplement.scpt"


----------

