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

Shell et commandes GNU Discussion :

Lancer un script shell depuis python


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2019
    Messages : 6
    Par défaut Lancer un script shell depuis python
    Bonjour tout le monde!
    j'ai besoin de lancer un script shell (nommé Allmesh) contenu dans /tmp depuis une console python.
    j'ai essayé cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    subprocess.run(['/tmp/meshCase','./Allmesh'])
    mais un message d'erreur de permission non accordée s'affiche:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Traceback (most recent call last):
      File "/home/nil/.FreeCAD/Macro/fitness_v3.FCMacro", line 69, in <module>
        subprocess.run(['/tmp/meshCase','./Allmesh'])
      File "/tmp/.mount_FreeCASWfZtV/usr/lib/python3.6/subprocess.py", line 403, in run
        with Popen(*popenargs, **kwargs) as process:
      File "/tmp/.mount_FreeCASWfZtV/usr/lib/python3.6/subprocess.py", line 709, in __init__
        restore_signals, start_new_session)
      File "/tmp/.mount_FreeCASWfZtV/usr/lib/python3.6/subprocess.py", line 1344, in _execute_child
        raise child_exception_type(errno_num, err_msg, err_filename)
    <class 'PermissionError'>: [Errno 13] Permission non accordée: '/tmp/meshCase'
    j'ai essayé de supprimer les permissions du répertoire /tmp avec un chmod -R -x /tmp ou de les modifier avec un chmod 777 /tmp (afin de rendre les fichiers éxecutables par un tiers) le premier essai n'ayant pas fonctionné.
    Quelqu'un aurait une idée??
    Merci Beaucoup
    Nil

  2. #2
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 287
    Par défaut
    Bonjour

    Il ne faut pas agir sur le répertoire /tmp, mais sur le fichier Allmesh. C'est le droit d'exécution du fichier que tu dois activer (si tu es sûr de la source et du fait que son exécution ne sera pas malveillante pour ton système).

    Si cet indice ne suffit pas, peux-tu préciser la nature de Allmesh ? Est-ce un script ? Un binaire exécutable ?
    Qui est le propriétaire ? Qui est l'exécutant de ton programme Python ?

  3. #3
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 651
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 651
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    subprocess.run(['/tmp/meshCase/Allmesh'])
    il pourrait être utile de tester que /tmp/meshCase existe et est un répertoire.
    mais ça, c'est une question python à poser sur le forum python, parce que c'est du python. du python !
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  4. #4
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2019
    Messages : 6
    Par défaut
    Merci de vos réponses si rapides!
    l'exécutant de mon programme python est un logiciel de CAO (FreeCAD) qui a une console incorporée et je ne sais pas comment trouver le propriétaire du script

    Allmesh est un script shell qui est créé par mon programme dans ce logiciel à chaque fois qu'il est appelé. Le truc c'est que j'ai besoin de le rendre exécutable à chaque fois qu'il est recréé mais je ne sais pas si le "chmoder" une fois suffit pour qu'à chaque fois qu'il réapparaisse il devienne exécutable automatiquement (j'imagine que non).

    J'ai aussi vérifié que le répertoire et les fichiers existe bien et la commande subprocess.run(['/tmp/meshCase/Allmesh']) ressort la même erreur

  5. #5
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 651
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 651
    Par défaut
    non, il n'est pas nécessaire que le script soit exécutable
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    subprocess.run(['/bin/bash','/tmp/meshCase/Allmesh'])
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  6. #6
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 287
    Par défaut
    (j'imagine que non)
    J'imagine que oui.
    Tout fichier est naturellement créé non-exécutable. Il faut donc le chmoder comme tu dis.

    Mais N_BaH a donné l'astuce en cas de script : donner l'interpréteur (à exécuter) au lieu de donner seulement le fichier seul.

Discussions similaires

  1. Lancer un script bash depuis python avec un délai d'exécution
    Par chatchat dans le forum Général Python
    Réponses: 5
    Dernier message: 17/04/2019, 14h53
  2. Lancer script shell depuis page PHP
    Par Funky89 dans le forum Langage
    Réponses: 11
    Dernier message: 25/09/2017, 16h43
  3. 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
  4. Lancer un script shell depuis un script python
    Par freestyler dans le forum Général Python
    Réponses: 18
    Dernier message: 04/10/2011, 09h59
  5. lancer un script shell et recupérer les résultats via script python
    Par GoldenEyes dans le forum Général Python
    Réponses: 2
    Dernier message: 04/09/2008, 18h15

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