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 :

Exécuter un script sh


Sujet :

AppleScript

  1. #1
    Membre à l'essai
    graphiste inforgraphiste monteur compositeur
    Inscrit en
    Septembre 2012
    Messages
    38
    Détails du profil
    Informations professionnelles :
    Activité : graphiste inforgraphiste monteur compositeur

    Informations forums :
    Inscription : Septembre 2012
    Messages : 38
    Points : 21
    Points
    21
    Par défaut Exécuter un script sh
    Bonjour à toi qui t'intéresse à ma demande !

    Voila j'ai une application qui execute de l'applescript dont un :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    do shell script "sh /Applications/dossiershell/monshell.sh"
    Hors je souhaiterais mettre ce sh dans le dossier 'ressources' de mon application et donc pour cela il me faut executer le sh avec le bon chemin je sais que apple script a 'path to me' qui existe en revanche je ne suis pas assez bon en applescript pour trouver comment mettre en forme tout cela

    par ailleur je souhaiterais faire la meme chose avec un .dmg (l'inclure dans mon application) et donc au lieu de faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    do shell script "hdiutil attach /Applications/mondmg.dmg"
    trouver la bonne syntaxe pour l’exécuter de l'intérieure de mon application

    Merci d'avance !

  2. #2
    Membre à l'essai
    graphiste inforgraphiste monteur compositeur
    Inscrit en
    Septembre 2012
    Messages
    38
    Détails du profil
    Informations professionnelles :
    Activité : graphiste inforgraphiste monteur compositeur

    Informations forums :
    Inscription : Septembre 2012
    Messages : 38
    Points : 21
    Points
    21
    Par défaut
    Up pls
    c'est en réalité assez pressé sorry... :p
    Un grand merci a celui ou celle qui me mettra sur la piste ou qui aura la réponse !

  3. #3
    Membre éprouvé

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Septembre 2010
    Messages
    602
    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 : 602
    Points : 1 239
    Points
    1 239
    Par défaut
    Bonsoir,

    Effectivement l'instruction path to me donne le chemin à ton paquet application.
    En général, tes fichiers personnels, dits de resources, doivent se trouver dans le paquet de ton application, dans le dossier "Resources".

    Donc les 2 fichiers que tu souhaites inclure doivent être déposés dans ce dossier Resources auquel tu accèdes dans ton script comme ci-dessous

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    set MonPath to POSIX path of ((path to me) as string) & "Resources/"
    set MonDMG to MonPath & "mondmg.dmg"
    set MonShell to MonPath & "monshell.sh"
    
    
    do shell script "hdiutil attach " & quoted form of MonDMG
    do shell script "sh " & quoted form of MonShell
    
    
    L'instruction "POXIS path of" converti un chemin "Finder" en chemin Unix: par exemple "HD:Users:Moiesktop:" devient "HD/Users/Moi/Desktop/"
    L'instruction "quoted form" permet de transmettre les données au shell entre quotes pour éviter l'interprétation erronée des éventuels caractères spéciaux du chemin d'accès (type espaces pour le plus courrant)

  4. #4
    Membre à l'essai
    graphiste inforgraphiste monteur compositeur
    Inscrit en
    Septembre 2012
    Messages
    38
    Détails du profil
    Informations professionnelles :
    Activité : graphiste inforgraphiste monteur compositeur

    Informations forums :
    Inscription : Septembre 2012
    Messages : 38
    Points : 21
    Points
    21
    Par défaut
    Salut effectivement dans la logique quand on connais la syntaxe c'est hyper simple je me sent un peu con ^^

    en revanche le chemin n'est pas trouvé erreur applescript : pour la ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    do shell script "hdiutil attach " & quoted form of MonDMG
    J'ai pourtant bien mis les fichiers concernés dans /Ressources de mon app.

    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
     
     
    set MonPath to POSIX path of ((path to me) as string) & "Resources/"
    set MonDMG to MonPath & "mondmg.dmg"
    set MonShell to MonPath & "monsh.sh"
    do shell script "hdiutil attach " & quoted form of MonDMG
    do shell script "sh " & quoted form of MonShell user name "XXXXX" password "XXXXX" with administrator privileges
    do shell script "hdiutil detach /dev/disk1s1"
    delay 1
    display notification "NOTIFICATION TXT" with title "NOTIFICATION TXT TITLE"
     
    set question to display dialog "DIALOG TXT" with title "DIALOG TXT TITLE" buttons {"Oui", "Non"} default button 2 with icon path to resource "icon.icns" in bundle (path to me)
    set answer to button returned of question
     
    if answer is equal to "Oui" then
    	tell application "System Events"
    		restart
    	end tell
    else
    	answer is equal to "Non"
    	display notification "TXT NOTIFICATION" with title "TITLE NOTIFICATION"
    	tell application "Mon - APP"
    		quit
    	end tell
     
    end if
    y a t'il comme pour php la possibilité de faire des echo ou var_dump() pour savoir ce qu'il y a dans les variables ?
    Tout comme surement une meilleure syntaxe plus optimisés et flexible (i'm a newbie ^^)

    Merci d'avance !

    ---

    [ EDIT ] ::
    1 // Ok pour faire du débug je fait : display dialog "my variable: " & MonPath
    2 // Le chemin est bien le bon jusqu'au dossier Ressources/

  5. #5
    Membre éprouvé

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Septembre 2010
    Messages
    602
    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 : 602
    Points : 1 239
    Points
    1 239
    Par défaut
    Bonsoir,
    Je pense que l'erreur vient de l'instruction complète que tu cherches à utiliser : hdiutil attach monAppli/Resources/monSh.sh

    Tu peux d'abord récupérer l'erreur shell avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Set A to do shell script"hdiutil detach /dev/disk1s1"
    display dialog A as string
    


    La variable A te donnera la réponse à ton instruction Shell. En effet, lors d'un do shell script, l'output et l'output d'erreur sont
    [FONT=Verdana, Arial, Tahoma, Calibri, Geneva, sans-serif]identiques.
    Je suggère aussi que tu lances dans le Terminal, directement l'instruction complète pour vérifier qu'elle fonctionne bien.

    Cordialement
    [/FONT]

  6. #6
    Membre à l'essai
    graphiste inforgraphiste monteur compositeur
    Inscrit en
    Septembre 2012
    Messages
    38
    Détails du profil
    Informations professionnelles :
    Activité : graphiste inforgraphiste monteur compositeur

    Informations forums :
    Inscription : Septembre 2012
    Messages : 38
    Points : 21
    Points
    21
    Par défaut
    Citation Envoyé par PBELL Voir le message
    Bonsoir,
    Je pense que l'erreur vient de l'instruction complète que tu cherches à utiliser : hdiutil attach monAppli/Resources/monSh.sh
    Je penser que tu voulais dire

    hdiutil attach monAppli/Resources/mondmg.dmg

    plutôt nan ?

    je vais test voir si j'arrive à débug le truc correctement mais je suis pas tres bon encore ^^, pas con de le test direct dans le terminal pour voir si ca sort un peu plus d'info
    je vais test je reviendrais demander du secours si je me noie !
    Merci !

    ---

    EDIT ::
    1 /
    Donc je viens de test pour avoir ce que me donne le MonDMG en faisant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    set MonDMG to MonPath & "mondmg.dmg"
    display dialog "my variable: " & MonDMG
    cela me donne bien :
    my variable: /Applications/mon - app.app/Resources/mondmg.dmg


    2 /
    Apres avoir test en mettant tout en une ligne pour virer des étapes voir si cela venait de l'une d'elle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    do shell script "hdiutil attach " & quoted form of (POSIX path of ((path to me) as string)) & "Resources/mondmg.dmg"
    Toujours l'erreur de script
    'L’action «*Exécuter un script AppleScript*» a rencontré une erreur.'


    3 /
    le terminal me donne :
    syntax error near unexpected token `do'
    donc je pense que c'est un probleme de parsing pour le chemin qu'en pense tu ?

  7. #7
    Membre à l'essai
    graphiste inforgraphiste monteur compositeur
    Inscrit en
    Septembre 2012
    Messages
    38
    Détails du profil
    Informations professionnelles :
    Activité : graphiste inforgraphiste monteur compositeur

    Informations forums :
    Inscription : Septembre 2012
    Messages : 38
    Points : 21
    Points
    21
    Par défaut
    Up Please, je ne trouve pas d’où vient l'erreur de script

  8. #8
    Membre éprouvé

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Septembre 2010
    Messages
    602
    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 : 602
    Points : 1 239
    Points
    1 239
    Par défaut
    Bonjour,
    Appliquons un peu de logique :

    Si tu as l'erreur " syntax error near unexpected token `do' "dans le Terminal , c'est donc ton instruction shell qui est incorrecte.

    Vérification faite sur un man dans le Terminal, la syntaxe " hdiutil attach chemin/mondmg.dmg " est correcte, ce que je viens de confirmer par script.

    Donc logiquement, l'erreur vient du chemin.
    En fait, c'est un peu de ma faute, car dans le paquet de ton application, il y a un dossier Contents dans lequel tu as le dossier Resources, dans lequel tu as dû mettre ton dmg. Or le script que je t'ai donné te fais chercher le dmg directement dans le dossier Resources.
    il faut donc corriger la première ligne du script avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    set MonPath to POSIX path of((path tome) as string) & "Contents/Resources/"
    
    et tout devrait fonctionner.
    Cordialement

  9. #9
    Membre à l'essai
    graphiste inforgraphiste monteur compositeur
    Inscrit en
    Septembre 2012
    Messages
    38
    Détails du profil
    Informations professionnelles :
    Activité : graphiste inforgraphiste monteur compositeur

    Informations forums :
    Inscription : Septembre 2012
    Messages : 38
    Points : 21
    Points
    21
    Par défaut
    Citation Envoyé par PBELL Voir le message
    En fait, c'est un peu de ma faute, car dans le paquet de ton application, il y a un dossier Contents dans lequel tu as le dossier Resources, dans lequel tu as dû mettre ton dmg. Or le script que je t'ai donné te fais chercher le dmg directement dans le dossier Resources.
    il faut donc corriger la première ligne du script avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    set MonPath to POSIX path of((path tome) as string) & "Contents/Resources/"
    
    et tout devrait fonctionner.
    Cordialement

    ...
    Putin je me sent bien con d'avoir laissé passé une erreur aussi flagrante ^^ apres c'est souvent ca lol !
    Un grand merci !

Discussions similaires

  1. Exécuter un script perl à partir de php
    Par ibtisss dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 6
    Dernier message: 10/11/2005, 11h44
  2. Réponses: 9
    Dernier message: 25/10/2005, 14h23
  3. [FLASH MX2004] Exécution de script PHP
    Par dleu dans le forum Flash
    Réponses: 2
    Dernier message: 30/03/2005, 19h10
  4. Réponses: 1
    Dernier message: 23/02/2005, 11h23
  5. Exécuter un script SQL
    Par borgfabr dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 05/03/2004, 08h47

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