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

Python Discussion :

Lancer un script shell depuis un script python


Sujet :

Python

  1. #1
    Membre régulier
    Inscrit en
    Septembre 2006
    Messages
    365
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 365
    Points : 83
    Points
    83
    Par défaut Lancer un script shell depuis un script python
    Bonjour,

    Comment Lancer un script shell depuis un script python ?

    j'ai essayé plusieurs trucs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    import os
    os.system('sh C:\temp\script.sh')
    ou encore
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    import subprocess
    subprocess.call("C:\temp\script.sh",shell=True)
    préfixés ou pas du sh à chaque fois..

    Rien ne se passe.
    Ca retourne 1! mais le script ne semble pas tourner puisque il ne fait pas ce qu'il est censé faire..


    Quelqu'un connait une syntaxe qui marche? Merci

  2. #2
    Membre averti
    Inscrit en
    Janvier 2007
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 329
    Points : 366
    Points
    366
    Par défaut
    Salut,

    essaie ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    import os
    os.system('sh C:\\temp\\script.sh')

  3. #3
    Membre régulier
    Inscrit en
    Septembre 2006
    Messages
    365
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 365
    Points : 83
    Points
    83
    Par défaut
    non toujours pas.. j'avais déja pensé à ça.. ajouté des guillmets, ...
    il semble que je ne suis pas du tout sur la bonne voie!

  4. #4
    Membre averti
    Inscrit en
    Janvier 2007
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 329
    Points : 366
    Points
    366
    Par défaut
    Question idiote : sh fonctionne sous windows ? Si oui, c'est pas sh.exe ?

  5. #5
    Membre éclairé
    Homme Profil pro
    heu...
    Inscrit en
    Octobre 2007
    Messages
    648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : heu...

    Informations forums :
    Inscription : Octobre 2007
    Messages : 648
    Points : 773
    Points
    773
    Par défaut
    Si je ne me trompe pas sh est une 'commande' linux pour executer un shell script, et sous windows, l"équivalent des shell script sont les batch (les.bat), et si je ne me trompes toujours pas, les .bat s'execute tes quels, ex : os.system('./MonBat.bat')

  6. #6
    Membre régulier
    Inscrit en
    Septembre 2006
    Messages
    365
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 365
    Points : 83
    Points
    83
    Par défaut
    tu te trompes lourdement
    sh ou sh.exe est un executable pour executer les scripts shell qui fonctionne très bien sous windows au meme titre que sous Unix ..
    Dire que l'équivalent des shell script est le batch est une énorme bêtise.

    Pour recadrer ce post car vous semblez perdre le fil de cette discussion :

    Je demande juste comment appeler un shell script depuis un script python.
    Il devrait y avoir un moyen, non?

    Merci

  7. #7
    Membre averti
    Inscrit en
    Janvier 2007
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 329
    Points : 366
    Points
    366
    Par défaut
    J'ai trouvé ça dans la doc python :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    import os
    import subprocess
     
    p = subprocess.Popen("'sh C:\\temp\\script.sh'", shell=True)
    sts = os.waitpid(p.pid, 0)
    si ça marche toujours pas, essaie de donner le chemin complet de "sh".

    Liens :
    http://docs.python.org/lib/module-subprocess.html
    http://www.haypocalc.com/wiki/Python_subprocess

  8. #8
    Membre régulier
    Inscrit en
    Septembre 2006
    Messages
    365
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 365
    Points : 83
    Points
    83
    Par défaut
    idem
    marche pas
    en plus j'ai une erreur maintenant :
    Traceback (most recent call last):
    File "<interactive input>", line 1, in <module>
    OSError: [Errno 10] No child processes

  9. #9
    Membre averti
    Inscrit en
    Janvier 2007
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 329
    Points : 366
    Points
    366
    Par défaut
    Dernière tentative : essaie une de ces solutions :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    import os
    import subprocess
    p = subprocess.Popen(["sh","C:\\temp\\script.sh"])
    sts = os.waitpid(p.pid, 0)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    import os
    import subprocess
    p = subprocess.Popen(["sh",'''"C:\temp\script.sh"'''])
    sts = os.waitpid(p.pid, 0)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    import os
    os.system('''sh "C:\temp\script.sh"''')
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    import os
    # avec le bon répertoire pour sh...
    os.system('''"C:\Windows\sh.exe" "C:\temp\script.sh"''')
    quand tu fais "sh C:\temp\script.sh" dans une console, ça marche au moins ?

  10. #10
    Membre régulier
    Inscrit en
    Septembre 2006
    Messages
    365
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 365
    Points : 83
    Points
    83
    Par défaut
    toujours pas ..

    et puis OUI ca marche sur une console

    Je ne conçois pas que c'est pas faisable!

  11. #11
    Membre éclairé
    Homme Profil pro
    Développeur
    Inscrit en
    Juin 2006
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juin 2006
    Messages : 645
    Points : 709
    Points
    709
    Par défaut
    C:\Documents and Settings\A319400>sh
    'sh' n'est pas reconnu en tant que commande interne
    ou externe, un programme exécutable ou un fichier de commandes.
    Moi je dis ça, je ne dis rien...

    Petite remarque au passage : essaie de ne pas être aussi agressif dans tes messages, ça ne donne pas trop envie de te répondre.
    « Se demander si un ordinateur peut penser est aussi intéressant que de se demander si un sous-marin peut nager. »
    -- Edsger Dijkstra

  12. #12
    Membre régulier
    Inscrit en
    Septembre 2006
    Messages
    365
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 365
    Points : 83
    Points
    83
    Par défaut
    Tant que ton sh n'est pas dans le PATH (variable d'environnement), c'est normal..

    mais pourquoi vous vous acharnez sur le sh? virez le si ca vous chante.. je demande juste comment faire pour appeler un script shell depuis python

  13. #13
    Membre éclairé
    Homme Profil pro
    Développeur
    Inscrit en
    Juin 2006
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juin 2006
    Messages : 645
    Points : 709
    Points
    709
    « Se demander si un ordinateur peut penser est aussi intéressant que de se demander si un sous-marin peut nager. »
    -- Edsger Dijkstra

  14. #14
    Membre régulier
    Inscrit en
    Septembre 2006
    Messages
    365
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 365
    Points : 83
    Points
    83
    Par défaut
    Bon j'ai trouvé
    En fait, toutes les syntaxes du début sont bonnes. j'avais juste des problèmes dans les chemins à l'intérieur de mon script shell

    Désolé pour tout ça..

    Maintenant, plus intéressant, je cherche un moyen de savoir si mon script shell est arrivé au bout sans erreurs.

    A l'intérieur du script shell, j'ai implémenté un code retour (exit o ou 1 selon il ya erreur ou pas) .. mais depuis python, comment récupérer ce code retour? y a t il une autre parade plus simple?

    Merci

  15. #15
    Membre averti
    Inscrit en
    Janvier 2007
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 329
    Points : 366
    Points
    366
    Par défaut
    content de voir que ça marche enfin !

    La fonction subprocess.call renvoie le code de retour :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    code_retour = subprocess.call(["/bin/mycmd", "myarg"])

  16. #16
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    hello,

    Pour lancer un fichier (.exe, .avi, .bat ....) il y a la fonction os.startfile qui lance le fichier avec le programme associé automatiquement. Par exemple en faisant:
    ca lancera le fichier video avec votre player habituel (comme si on double-cliker sur le ficier).
    C'est une fonction pas très connut mais qui peut rendre bien des services

  17. #17
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 689
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 689
    Points : 30 983
    Points
    30 983
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par freestyler Voir le message
    tu te trompes lourdement
    Dire que l'équivalent des shell script est le batch est une énorme bêtise.
    Dans un fofo, il faut essayer de dépasser le simple mot pour en extraire le fond de la pensée de l'auteur. Quand il dit "équivalent" (comme j'aurais pu le dire moi-même), il pense plutôt "langage natif permettant d'écrire des scripts" mais cette alitération peut se résumer par "équivalent" (pris dans le sens large). Evidemment que le batch n'a pas la puissance et la richesse du shell Unix mais cela permet de donner un ordre d'idée. Je plussois alband85 quand il te demande d'être moins agressif envers les intervenants qui essaient de t'aider à résoudre ton problème.

    Et accessoirement je me demande pourquoi tu cherches à exécuter un shell Unix sur du zindow. T'as pas moyen d'intégrer ce shell dans ton programme Python ???
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  18. #18
    Membre régulier
    Inscrit en
    Septembre 2006
    Messages
    365
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 365
    Points : 83
    Points
    83
    Par défaut
    excuses si j'ai semblé être agressif .. ce n'était qu'un simple échange de répliques instantanées pour moi (si j'ai répondu ainsi c'est que j'ai dù répliquer à plusieurs 'si je ne me trompe pas' ..)
    et puis surtout que j'avais eu l'impression que l'on sortait du sujet de mon post..

    bref.. Désolé pour tout ça.. ce n'est pas le genre de la maison

    Cela dit, je suis débutant sur python
    et puis je suis à court de temps, et le script que j'ai écrit en shell n'est pas si simple.. L'idéal serait OUI de transformer tout en python et je suis convaincu que ce serait meme plus facile mais c'est juste une histoire de temps..

  19. #19
    Candidat au Club
    Homme Profil pro
    Conseil en assistance à maîtrise d'ouvrage
    Inscrit en
    Octobre 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Albanie

    Informations professionnelles :
    Activité : Conseil en assistance à maîtrise d'ouvrage
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2011
    Messages : 5
    Points : 4
    Points
    4
    Par défaut Lancer un excecutable .exe avec des paramètres
    Besoin de votre aide,
    Je dois lancer un .exe à partir d'un script python mais cette fois avec des paramètres comme ceci :

    os.startfile(' "TmaApplication.exe" /u cmi /c y /p 5003 /a y ' )

    ça ne marche pas meme en précisant le chemin de l'appliction.

    Avez vous une idée?
    Merci.

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

Discussions similaires

  1. Appel de script shell depuis python
    Par Marc_27 dans le forum Général Python
    Réponses: 0
    Dernier message: 15/04/2015, 11h06
  2. appel de script shell depuis un script bat
    Par jonathan1 dans le forum Windows
    Réponses: 0
    Dernier message: 18/11/2009, 12h34
  3. écrire dans un script shell depuis perl
    Par painouch21 dans le forum Langage
    Réponses: 1
    Dernier message: 10/02/2008, 14h03
  4. lancer un script perl depuis un script perl
    Par minusette dans le forum Langage
    Réponses: 7
    Dernier message: 23/08/2006, 12h03
  5. Execution d'un script shell depuis un code C
    Par aproust dans le forum C
    Réponses: 6
    Dernier message: 12/05/2006, 13h53

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