IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AppleScript Discussion :

Applescript + Terminal [AppleScript]


Sujet :

AppleScript

  1. #1
    Membre averti
    Homme Profil pro
    assistant informatique
    Inscrit en
    Mai 2013
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : assistant informatique
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mai 2013
    Messages : 27
    Par défaut Applescript + Terminal
    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:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    --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
    
    --fonction qui permet d'avoir le chemin du script (pratique quand on change le script de place) et de changer ce chemin pour indiquer le chemin du fichier qui va être copié sur l'ordinateur distant: la variable s'appelera haystack
    --Get the paths of all selected files
    set strFilePath to {}
    tell application "Finder"
    	repeat with objItem in (get selection)
    		set end of strFilePath to POSIX path of (objItem as text)
    	end repeat
    end tell
    
    
    --Copy the file paths to the clipboard
    set {strDelimeter, text item delimiters} to {text item delimiters, return}
    set the clipboard to strFilePath as text
    set text item delimiters to strDelimeter
    
    set haystack to strFilePath
    set needle to "extensions/adminhidercomplement.scpt"
    set replacement to "Get-scriptdirectory.scpt"
    search_replace(haystack, needle, replacement)
    
    on search_replace(haystack, needle, replacement)
    	set old_delimiters to AppleScript's text item delimiters
    	set AppleScript's text item delimiters to needle
    	set temp_list to every text item of haystack
    	set AppleScript's text item delimiters to replacement
    	set return_value to temp_list as text
    	set AppleScript's text item delimiters to old_delimiters
    	return return_value
    end search_replace
    
    display dialog haystack as text with title "Path(s) copied to clipboard" with icon note giving up after 10 buttons {"Close"} default button "Close"
    
    
    --actions si on veut effectuer le script en local
    if the button returned of the result is "ce mac" then
    	tell application "Terminal"
    		activate
    		do shell script "sudo -s dscl . -create /Users/admin UniqueID 401" with administrator privileges
    		do shell script "sudo chown -R admin /Users/admin/" with administrator privileges
    		do shell script "sudo defaults write /Library/Preferences/com.apple.loginwindow Hide500Users -bool YES" with administrator privileges
    	end tell
    else
    	
    	
    	-- actions si on veut efféctuer le script sur un ordinateur distant
    	display dialog "Quel est l'adresse IP de l'ordinateur distant?" default answer "" buttons {"OK"} default button 1
    	
    	display dialog text returned of the result & "
    	
    	" & "Il sagit du mac " & "? Etes vous sûr de vouloir continuer?" buttons {"Ok", "Annuler"}
    	
    	if the button returned of the result is "Ok" then
    		tell application "Terminal"
    			activate
    			do shell script "scp -r haystack admin@" & text returned of the result & ":/Users/admin/Desktop/"
    			do shell script "ssh admin@" & text returned of the result
    			do shell script "osascript -l /Users/admin/Desktop/adminhidercomplement.scpt"
    		end tell
    	end if
    end if

    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 .

  2. #2
    Membre émérite

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Septembre 2010
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 606
    Par défaut
    Bonjour Blackviking,

    Voici quelques pistes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    do shell script "scp -r haystack admin@" & text returned of the result & ":/Users/admin/Desktop/"
    ... ne peut fonctionner car effectivement l'instruction que tu envoies est "scp -r haystack admin@ ..." qui ne veut rien dire car "haystack" n'est pas un chemin.
    Pour que le texte haystack soit remplacé par sa valeur de variable, il faut sortir du mode texte avec des ", puis mettre haystack qui sera alors interprété, puis entrer de nouveau en mode texte avec des guillemets:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    do shell script "scp -r " & haystack & " admin@" & text returned of the result & ":/Users/admin/Desktop/"
    C'est à dire remplacement de : haystack par :" & haystack & " -- sans oublier les espaces après le -r et avant le admin
    Compte tenu de la ligne 9, il semble que haystack soit bien au format Unix, donc cela devrait fonctionner.


    Pour le reste, je ne peux tester car, sur ma version système (Snow Leopard), je n'ai pas de flag Hide500Users dans la plist com.apple.loginwindow !

    Cordialement

  3. #3
    Membre averti
    Homme Profil pro
    assistant informatique
    Inscrit en
    Mai 2013
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : assistant informatique
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mai 2013
    Messages : 27
    Par défaut
    Ah oui, merci, faute d'inattention. La syntaxe est bonne maintenant mais mon problème persiste: mes variables (haystack et text returned) créées dans applescript ne sont pas transférées dans ma session de terminal

  4. #4
    Membre émérite

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Septembre 2010
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 606
    Par défaut
    Bonsoir Blackviking,

    Pour la variable haystack, je te suggère de tester avec le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Set Instruction to "scp -r " & haystack & " admin@"
    display dialog "vérification d'instruction=" & Instruction[/CODE]

    normalement le dialog affiché devrait contenir exactement l'instruction Unix que tu souhaites envoyer à la machine distante (tout du moins la première partie).

    Pour la variable "text returned", cela m'avait échappé en première lecture, mais l'erreur vient du fait que les valeurs de résultat de text et bouton "returned" sont écrasées après chaque display dialog.
    Dans ton code, la ligne 49 demande l'adresse IP et le résultat du bouton.
    Ces dernières sont remises à 0 lors du second display dialog en ligne 51

    Donc je te suggère de stocker l'adresse IP dans une variable temporaire IP_Adresse, qui, elle, ne peut être effacée automatiquement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    	display dialog "Quel est l'adresse IP de l'ordinateur distant?" default answer "" buttons {"OK"} default button 1
    Set IP_Adresse to text returned of the result	
    	display dialog IP_Adresse & "
     
    	" & "Il sagit du mac " & "? Etes vous sûr de vouloir continuer?" buttons {"Ok", "Annuler"}
     
    	if the button returned of the result is "Ok" then
    		tell application "Terminal"
    			activate
    			do shell script "scp -r " & haystack & " admin@" & IP_Adresse & ":/Users/admin/Desktop/"
    			do shell script "ssh admin@" & IP_Adresse
    			do shell script "osascript -l /Users/admin/Desktop/adminhidercomplement.scpt"
    		end tell
    	end if
    e
    Enfin, un conseil, pour débugger ce type de code (cela m'arrive assez souvent !) : passe par un fichier texte en remplaçant les do shell script par un enregistrement texte. Ensuite, tu peux copier coller chaque ligne de ce texte directement dans le terminal pour vérifier le résultat ..et voir éventuellement les erreurs émises par le terminal (type connexion non établie, etc...).
    Cordialement

  5. #5
    Membre averti
    Homme Profil pro
    assistant informatique
    Inscrit en
    Mai 2013
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : assistant informatique
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mai 2013
    Messages : 27
    Par défaut
    Ah super, c'est ça qui coinçait.
    Merci beaucoup PBELL.


    Voici le code réorganisé:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    --fonction qui permet d'avoir le chemin du script (pratique quand on change le script de place) et de changer ce chemin pour indiquer le chemin du fichier qui va être copié sur l'ordinateur distant: la variable s'appellera haystack
    --Get the paths of all selected files
    set strFilePath to {}
    tell application "Finder"
    	repeat with objItem in (get selection)
    		set end of strFilePath to POSIX path of (objItem as text)
    	end repeat
    end tell
     
     
    --Copy the file paths to the clipboard
    set {strDelimeter, text item delimiters} to {text item delimiters, return}
    set the clipboard to strFilePath as text
    set text item delimiters to strDelimeter
     
    set haystack to strFilePath
    set needle to "extensions/adminhidercomplement.scpt"
    set replacement to "Get-scriptdirectory.scpt"
    search_replace(haystack, needle, replacement)
     
    on search_replace(haystack, needle, replacement)
    	set old_delimiters to AppleScript's text item delimiters
    	set AppleScript's text item delimiters to needle
    	set temp_list to every text item of haystack
    	set AppleScript's text item delimiters to replacement
    	set return_value to temp_list as text
    	set AppleScript's text item delimiters to old_delimiters
    	return return_value
    end search_replace
     
     
     
     
     
    --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
     
     
     
     
    --actions si on veut effectuer le script en local
    if the button returned of the result is "ce mac" then
    	tell application "Terminal"
    		activate
    		do shell script "sudo -s dscl . -create /Users/admin UniqueID 401" with administrator privileges
    		do shell script "sudo chown -R admin /Users/admin/" with administrator privileges
    		do shell script "sudo defaults write /Library/Preferences/com.apple.loginwindow Hide500Users -bool YES" with administrator privileges
    	end tell
    else
     
     
     
     
     
    	-- actions si on veut effectuer le script sur un ordinateur distant
    	display dialog "Quel est l'adresse IP de l'ordinateur distant?" default answer "192.168." buttons {"OK"} default button 1
    	set IP_adress to text returned of the result
    	set IP_adress2 to result
    	display dialog "Il sagit du mac _______? Etes vous sûr de vouloir continuer?" with title IP_adress2 buttons {"Ok", "Annuler"}
     
    	if the button returned of the result is "Ok" then
    		tell application "Terminal"
    			activate
    			do shell script "scp -r " & haystack & " admin@" & IP_adress & ":/Users/admin/Desktop/"
    			do shell script "ssh admin@" & text returned of the result
    			do shell script "osascript -l /Users/admin/Desktop/adminhidercomplement.scpt"
    			do shell script "rm /Users/admin/Desktop/adminhidercomplement.scpt"
    		end tell
    	end if
    end if
    Reste plus que quelques petites modifs et ce script sera parfait! :notamment ligne 59 indiquer le nom de l'ordinateur distant et faire des tests sur des ordi plus récents (mon ordi distant test en ce moment est en 10.5.9 et bloque au moment de la connexion ssh)

  6. #6
    Membre averti
    Homme Profil pro
    assistant informatique
    Inscrit en
    Mai 2013
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : assistant informatique
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mai 2013
    Messages : 27
    Par défaut
    Hello, bon après bien des tests et des heures à chercher, j'ai des problèmes pour les commandes Terminal à distance.

    Quand je fais les commandes directement dans le Terminal. Le Terminal me demande le mot de passe admin. Avec Applescript, il ne me demande rien et me met ces messages d’erreurs:



    la commande de connexion ssh me donne:




    La session à distance est activée dans l'onglet de partage sur les 2 macs.
    Quelqu'un aurait une idée?

    Merci d'avance.

  7. #7
    Membre émérite

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Septembre 2010
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 606
    Par défaut
    Bonsoir Blackvicking,
    En fait ta commande ssh requiert un mot de passe administrateur.
    Voici ce que cela donne dans une fenêtre de terminal direct :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ssh admin@192.168.1.11
    Password:
    Last login: Sat May 25 10:00:58 2013
    admin:~ Mon_disque$
    La première ligne contient le ssh, mais la seconde ligne est affichée par le Terminal et demande le mot de passe. J'ai entré celui-ci, mais le Terminal ne l'affiche pas.

    Le problème est que cette entrée de mot de passe se fait en mode terminal fenêtre active via stdin, or, pour des raisons assez évidentes, la commande do shell script n'accepte pas la gestion de stdin (la fenêtre de terminal étant virtuelle, comment demander une saisie !!).

    J'avoue ne pas avoir trouver de solution pour ssh en AppleScript sauf à passer par des notions de clé publiques (je l'ai lu, mais là, je ne maîtrise pas !).

    Donc pas de ssh à cause du mot de passe... Pourtant, tu veux toujours changer, sur le mac distant, le paramètre suivant (si j'ai bien compris, car je n'ai pas ce paramètre sous Snow Leopard) :
    /Library/Preferences/com.apple.loginwindow Hide500Users -bool YES
    Je suppose que logiquement, ce paramètre est aussi au niveau admin et pas dans la library user...?

    Il y a des moyens de se connecter à la machine distante, sans passer par ssh, mais même connecté, il faudrait passer en sudo, ce qui, de nouveau nous confrontera à la saisie du mot de passe admin sous AppleScript..donc au point de départ.
    Je continue à chercher un peu ce soir. Désolé !

    Cordialement

  8. #8
    Membre émérite

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Septembre 2010
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 606
    Par défaut
    Bonjour,
    Chose promise, chose due !
    J'ai donc recherché un peu sur les clés privées/publiques. C'est tout à fait possible, mais il faut paramétrer, sur chaque client (tu en as peut être beaucoup ?) la clé adéquate, ce qui peut être fastidieux.

    J'ai donc cherché à contourner le fait que ssh est en mode interactif par défaut (il demande le mot de passe) avec un script: le plus simple est de simuler ce que tu ferais si tu tapais directement dans ton Terminal local !

    Voici un script d'exemple avec :
    1) saisie du mot de passe admin en mode caché (points à la place des lettres)
    2) ouverture du Terminal, saisie de la commande ssh puis simulation du retour chariot
    3) simulation de saisie du mot de passe
    Enfin, pour être propre, je clos la session ssh (exit) et referme le terminal

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    -- saisie en mode caché du mot de passe admin de la machine distante
    set Saisie to display dialog "Entrez le mot de passe administrateur :" with title "mot de passe machine distante" default answer "" with hidden answer
    set MdP_Admin to text returned of Saisie
     
    -- ouverture du terminal en premier plan
    tell application "Terminal"
    	activate
    end tell
     
    -- commande ssh envoyée sur terminal, suivie de  "return" puis du mot de passe
    tell application "System Events"
    	keystroke "ssh mini@192.168.1.11" & (ASCII character 13)
    	delay 1 -- pour laisser le temps de la réponse (mettre 2 si réseau lent)
    	keystroke MdP_Admin & (ASCII character 13)
    end tell
     
    -- commande Exit de liaison ssh pour fermer proprement
    tell application "System Events"
    	keystroke "exit" & (ASCII character 13)
    	delay 1
    end tell
     
    -- autres commandes de ton script ici (copie, exécution du script)
     
    -- fermeture propre de l'application Terminal locale
    delay 2
    tell application "Terminal" to quit
    Si tu ne quittes pas le Terminal à la fin ou si tu mets un délai plus long avant de quitter, cela te permets en plus de voir les éventuelles erreurs...
    Bon courage

  9. #9
    Membre averti
    Homme Profil pro
    assistant informatique
    Inscrit en
    Mai 2013
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : assistant informatique
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mai 2013
    Messages : 27
    Par défaut
    Bonjour, et merci de toutes tes recherches. Moi qui pensait y passer que quelques heures sur ce script


    Effectivement, il y a plus de 1000 postes dans notre parc. Passer sur tous les postes serait impensable.
    Je refais mon script avec tes indications et je reviens sur le site pour dire ce qu'il en est


    Petite question subsidiaire: comment as tu appris à te servir d'applescript? Je n'arrive pas à trouver des infos claires quand je fais des recherches ou alors je tombe sur des docs basiques d'applescript.


    Bonne journée.

  10. #10
    Membre émérite

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Septembre 2010
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 606
    Par défaut
    Bonjour Balckviking,

    Effectivement, il y a plus de 1000 postes dans notre parc.
    Ej te suggère donc de changer ton programme pour qu'il boucle tout seul sur les machines de ton réseau :
    1) chercher le masque de tes adresses IP pour déterminer les plages d'adresses
    2) boucler sur toutes les adresses possibles
    3) pour chaque adresse déterminer si la machine est présente ou pas (selon tes niveaux de sécurité tu peux faire un ping en shell script et lire le résultat)
    4) si la machine est présente, lecture via cat / grep de ton flag "loginwindow Hide500Users"
    5) mise à la bonne valeur si nécessaire
    Cordialement

  11. #11
    Membre averti
    Homme Profil pro
    assistant informatique
    Inscrit en
    Mai 2013
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : assistant informatique
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mai 2013
    Messages : 27
    Par défaut
    Bon voila, j'ai enfin réussi à faire ce que je voulais faire depuis le départ grâce à tes indications.

    Voici le code complet:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    --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 1
     
     
     
     
    --actions si on veut effectuer le script en local
    if the button returned of the result is "ce mac" then
    	tell application "Terminal"
    		--activate -- permet d'afficher la fenêtre du terminal
    		do shell script "sudo -s dscl . -create /Users/admin UniqueID 401" with administrator privileges
    		do shell script "sudo chown -R admin /Users/admin/" with administrator privileges
    		do shell script "sudo defaults write /Library/Preferences/com.apple.loginwindow Hide500Users -bool YES" with administrator privileges
    	end tell
    else
     
     
     
     
    	-- actions si on veut effectuer le script sur un ordinateur distant
    	display dialog "Quel est l'adresse IP de l'ordinateur distant?" default answer "192.168." buttons {"OK", "Annuler"} default button 1
    	set IP_adress to text returned of the result
    	set IP_adress2 to result
    	display dialog "Il sagit du mac (normalement nom de l'ordi distant) en mac (version de l'os)?
     
    Etes vous sûr de vouloir continuer?
     
    " with title IP_adress2 buttons {"Ok", "Annuler"} default button 1
     
    	if the button returned of the result is "Ok" then
     
    		set Saisie to display dialog "Entrez le mot de passe administrateur :" with title "mot de passe machine distante" default answer "" with hidden answer
    		set MdP_Admin to text returned of Saisie
     
     
    		tell application "Terminal"
    			activate --permet d'afficher la fenêtre du terminal
    			do script "ssh admin@" & IP_adress & (ASCII character 13) in window 1
    			delay 3 -- pour laisser le temps de la réponse (mettre 2 si réseau lent)
    			do script MdP_Admin & (ASCII character 13) in window 1
    			delay 3
    			do script "sudo dscl . -create /Users/admin UniqueID 401" in window 1
    			delay 3
    			do script MdP_Admin & (ASCII character 13) in window 1
    			delay 3
    			do script "sudo chown -R admin /Users/admin/" in window 1
    			delay 1
    			do script "sudo defaults write /Library/Preferences/com.apple.loginwindow Hide500Users -bool YES" in window 1
    			delay 1
    			do script "exit" in window 1
    			delay 1
    			tell application "Terminal" to quit
    		end tell
    	end if
    end if


    Je fais partager pour ceux que ca pourrait intéresser le script pour faire l'inverse, ré afficher un compte après l'avoir caché:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    --affiche une fenêtre de choix
    display dialog "Ce script va faire réapparaitre le compte admin.
     
    Voulez vous effectuer ce changement sur un ordinateur distant ou sur cet ordinateur?
     
    " buttons {"mac distant", "ce mac", "Annuler"} default button 1
     
     
     
     
    --actions si on veut effectuer le script en local
    if the button returned of the result is "ce mac" then
    	tell application "Terminal"
    		--activate -- permet d'afficher la fenêtre du terminal
    		do shell script "sudo defaults write /Library/Preferences/com.apple.loginwindow Hide500Users -bool NO" with administrator privileges
    		do shell script "sudo -s dscl . -create /Users/admin UniqueID 501" with administrator privileges
    		do shell script "sudo chown -R admin /Users/admin/" with administrator privileges
    	end tell
    else
     
     
     
     
    	-- actions si on veut effectuer le script sur un ordinateur distant
    	display dialog "Quel est l'adresse IP de l'ordinateur distant?" default answer "192.168." buttons {"OK", "Annuler"} default button 1
    	set IP_adress to text returned of the result
    	set IP_adress2 to result
    	display dialog "Il sagit du mac (normalement nom de l'ordi distant) en mac (version de l'os)?
     
    Etes vous sûr de vouloir continuer?
     
    " with title IP_adress2 buttons {"Ok", "Annuler"} default button 1
     
    	if the button returned of the result is "Ok" then
     
    		set Saisie to display dialog "Entrez le mot de passe administrateur :" with title "mot de passe machine distante" default answer "" with hidden answer
    		set MdP_Admin to text returned of Saisie
     
     
    		tell application "Terminal"
    			activate --permet d'afficher la fenêtre du terminal
    			do script "ssh admin@" & IP_adress & (ASCII character 13) in window 1
    			delay 3 -- pour laisser le temps de la réponse (mettre 2 si réseau lent)
    			do script MdP_Admin & (ASCII character 13) in window 1
    			delay 3
    			do script "sudo defaults write /Library/Preferences/com.apple.loginwindow Hide500Users -bool NO" in window 1
    			delay 3
    			do script MdP_Admin & (ASCII character 13) in window 1
    			delay 3
    			do script "sudo dscl . -create /Users/admin UniqueID 501" in window 1
    			delay 1
    			do script "sudo chown -R admin /Users/admin/" in window 1
    			delay 1
    			do script "exit" in window 1
    			delay 1
    			tell application "Terminal" to quit
    		end tell
    	end if
    end if

    Je garde tes suggestions sous le coude parce que là, je fais une tite overdose de recherche et de test

    Merci en tout cas pour le temps passé sur mon cas.


    Bon week end

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [sondage terminé] Quel est le meilleur Antivirus , firewall, etc ?
    Par Jean-Philippe Dubé dans le forum Sécurité
    Réponses: 277
    Dernier message: 22/04/2009, 22h53
  2. Cron + terminal + script shell
    Par nicolas.pissard dans le forum Linux
    Réponses: 3
    Dernier message: 17/03/2004, 09h24
  3. [TTHREAD] ne termine pas sont exécution
    Par Bbenj dans le forum Langage
    Réponses: 4
    Dernier message: 02/08/2002, 16h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo