web-dev-qa-db-fra.com

Impossible d'exécuter un script shell à partir d'un sous-processus python: autorisation refusée

J'ai essayé de googler, mais je ne trouvais rien qui se rapporte à mon problème particulier. J'essaie d'exécuter un script shell à partir de python, mais le script shell ne s'exécutait pas à cause d'une erreur d'autorisation refusée. Le code python que j'utilise est le suivant:

process = subprocess.Popen('run.sh', Shell=True, stdout=subprocess.PIPE)
process.wait()
....
os.killpg(pro.pid, signal.SIGTERM)

L'erreur que j'obtiens:

python RunScript.py "input"
/bin/sh: 1: run.sh: Permission denied

Le contenu de mon script Shell est:

#!/bin/sh
abspath=$(cd "$(dirname "$0")"; pwd)
CLASSPATH=$CLASSPATH:$abspath/"lib/*":$abspath/"bin"
export CLASSPATH
Java -classpath $CLASSPATH my.folder.path.Class $abspath/../data/data.txt $abspath/../data/data2.txt

Merci d'avance.

17
Quanquan Liu

Vérifiez votre mode run.sh, s'il n'y a pas d'indicateur exécutable, définissez-le avec la commande 

chmod +x run.sh
22
PasteBT

c'est parce que vous n'avez pas la permission d'exécuter ce script. Vous devrez donner une autorisation exécutable pour que ce script s'exécute.

chmod a + x run.sh

0
Arovit