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

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    octobre 2003
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : octobre 2003
    Messages : 33
    Points : 28
    Points
    28

    Par défaut Servet lance script bash avec droits insuffisants

    Bonjour,

    Je modifie une application qui a recours à des servets (tomcat+postgresql sous ubuntu) qui vont lancer un script bash (200 lignes) dont certaines instructions refusent de s'exécuter car elles n'ont pas les droits suffisants, par exemple cette commande:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    command="soxi ${audioFile}  -D 2>&1"
     
    eval "auduration=${command}"
    a pour resultat (log)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    /home/teto/workspace/cml/etc/shell/redemo.sh: line 150: /home/teto/workspace/cml/etc/redemo/data/5757575/5757575_5775/TEST3/5757575_5775_TEST3.wav: Permission non accordée
    Executing command 'soxi /home/teto/workspace/cml/etc/redemo/data/5757575/5757575_5775/TEST3/5757575_5775_TEST3.wav  -D 2>&1'
    Comment résoudre ces pb de droits pour que le script bash ait le droit d'exécuter des instructions sur les fichiers uploadés (je suis tjrs en local) par l'utilisateur svp ?
    Faut-il que je déplace le dossier d'upload ? où ?

    Par avance merci

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    avril 2007
    Messages
    25 461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : avril 2007
    Messages : 25 461
    Points : 48 730
    Points
    48 730

    Par défaut

    le script bash va être exécuté avec les même droits que ton serveur d'application. Donc en général ça ne pose pas de problème.

    Ton message d'erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /home/teto/workspace/cml/etc/redemo/data/5757575/5757575_5775/TEST3/5757575_5775_TEST3.wav: Permission non accordée
    semble plutot indiquer que tu as tenté d'exécuter le fichier.

    Pourrais-t-on voir une partie du script avec les numéros de ligne?

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    octobre 2003
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : octobre 2003
    Messages : 33
    Points : 28
    Points
    28

    Par défaut

    En fait tu as raison c'est exactement ca. J'ai un peu de mal avec bash mais en transformant ma commande comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    command="soxi ${audioFile}  -D 2>&1"
    eval "auduration=\$(${command})"
    Ca marche.

    Encore merci pr ta précieuse aide

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    avril 2007
    Messages
    25 461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : avril 2007
    Messages : 25 461
    Points : 48 730
    Points
    48 730

    Par défaut

    autre option plus lisible:

    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    auduration=`soxi ${audioFile}  -D 2>&1`

    Les quotes simples inversées permettent de récupérer (par exemple dans une variable ici) le stdout d'une commande. Exemple: avoir tous le listing d'un répertoire
    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    Repertoire=`ls -la $folder`

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    octobre 2003
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : octobre 2003
    Messages : 33
    Points : 28
    Points
    28

    Par défaut

    ok ca marche ^^

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

Discussions similaires

  1. Commande grep/sed dans script bash avec regex
    Par 1r2R1 dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 02/04/2014, 17h49
  2. Scripts bash avec du SCP
    Par suya95 dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 15/01/2013, 15h36
  3. Linux executer un script bash avec php
    Par xunil2003 dans le forum Débuter
    Réponses: 0
    Dernier message: 01/07/2012, 12h15
  4. sftp dans un script bash avec .netrc
    Par mehdi_oca dans le forum Linux
    Réponses: 2
    Dernier message: 02/11/2010, 22h42
  5. écrire un script bash avec des paramètres -r, -a
    Par Balbuzard dans le forum Linux
    Réponses: 4
    Dernier message: 17/12/2009, 14h03

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