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

Langage Java Discussion :

Exécution de commande shell


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2011
    Messages
    192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Transports

    Informations forums :
    Inscription : Février 2011
    Messages : 192
    Par défaut Exécution de commande shell
    Bonjour,

    Je souhaiterais exécuter une commande shell depuis Linux (le but étant de ne pas créer de script dans la mesure du possible).

    Je dois exécuter une commande de mise à jour de la date (qui fonctionne parfaitement dans un shell classique) :

    Le problème est que la commande ne fonctionne pas... je suis tombé sur plusieurs posts similaires (http://www.developpez.net/forums/d10...-quote-resolu/) mais cela ne m'aide pas... j'ai essayé en passant la commande de 2 façons :
    String[] : pour séparer ma chaine
    String : toute la commande d'un coup

    J'ai essayé les simples quotes, doubles quotes, quotes protégées par backslash... rien n'y fait...
    J'ai essayé d'ajouter sudo, pas de changement...
    J'ai essayé d'ajouter les chemins des commandes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /usr/bin/sudo /bin/date -s '-2 seconds'
    Mais aucun succès.. voici l'erreur retournée :
    java.io.IOException: Cannot run program "/usr/bin/sudo /bin/date -s "-2.0 seconds"": java.io.IOException: error=2, No such file or directory
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:460)
    at java.lang.Runtime.exec(Runtime.java:593)
    at java.lang.Runtime.exec(Runtime.java:466)
    at org.tn.thread.ExecCommandeShell.executeAvecRetour(ExecCommandeShell.java:77)
    at org.tn.pcEmbarque.moduleUCCG.tacheTest.RemiseALHeure.corriger(RemiseALHeure.java:115)
    at org.tn.pcEmbarque.moduleUCCG.tacheTest.RemiseALHeure.demarrer(RemiseALHeure.java:65)
    at org.tn.thread.RunnableTN.run(RunnableTN.java:240)
    at java.lang.Thread.run(Thread.java:662)
    Caused by: java.io.IOException: java.io.IOException: error=2, No such file or directory
    at java.lang.UNIXProcess.<init>(UNIXProcess.java:148)
    at java.lang.ProcessImpl.start(ProcessImpl.java:65)
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:453)
    ... 7 more
    j'ai testé en appelant la commande "/bin/uname" pour voir si le chemin était en cause, ça fonctionne...

    Pourquoi cette commande ne fonctionne-t-elle pas via le runtime Java ?

    Merci d'avance pour votre aide.

  2. #2
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    Tu as essayé plein de chose, mais tu ne donne pas de code...

    Tu as bien séparé les différents paramètres de la requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    new ProcessBuilder("/bin/data", "s", "-2 seconds")
    Maintenant s'il faut passer en root c'est plus délicat, car il me semble que sudo requiert d'être attaché à un terminal pour fonctionner.

    De même est-ce que tu traites les flux d'entrée/sorties ?
    Ca peut servir en cas d'erreur (avec Java 7 on peut utiliser directement inheritIO())



    a++

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2011
    Messages
    192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Transports

    Informations forums :
    Inscription : Février 2011
    Messages : 192
    Par défaut
    hello

    merci de ta réponse,

    oui, j'ai testé en séparant les parametres dans un tableau et aussi en laissant en entier, les 2 renvoient la même erreur..

    Je traite le flux de sortie, le flux d'erreur, c'est d'ailleurs l'erreur que j'ai noté qui apparait dans le flux d'erreur.

    Au bout de quelques tests, je déduits que c'est vraiment la commande date, puisque j'ai essayé avec d'autres commandes, ça marche très bien...

    L'appel au sudo n'est pas la cause, je peux appeler des commandes avec sudo, elles fonctionnent, et elle ne marchent pas si je l’enlève..

    A mon grand regret, j'appelle désormais un script... et la miracle...

    Bref, je ne sais pas pourquoi ca ne marche pas avec date..

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

Discussions similaires

  1. Exécution de commandes SHELL avec SharpSSH
    Par belaidw dans le forum Services Web
    Réponses: 0
    Dernier message: 29/09/2009, 05h00
  2. [Système] Exécuter des commandes shell
    Par Invité dans le forum Langage
    Réponses: 2
    Dernier message: 18/10/2008, 21h06
  3. [VBA]Exécuter une commande Shell
    Par antoine46 dans le forum VBA Access
    Réponses: 4
    Dernier message: 16/04/2008, 08h07
  4. Exécution de command shell et de fichiers .bat en C#
    Par jerome.fortias dans le forum C#
    Réponses: 6
    Dernier message: 05/09/2007, 14h14
  5. expression régulière + excution de commande shell
    Par goanes dans le forum Langage
    Réponses: 3
    Dernier message: 11/10/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