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

API standards et tierces Java Discussion :

[débutant]lancement d'une commande Unix ou LInux depuis Java


Sujet :

API standards et tierces Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    21
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 21
    Points : 15
    Points
    15
    Par défaut [débutant]lancement d'une commande Unix ou LInux depuis Java
    Bonjour,

    Je veux exécuter une commande shell depuis java,
    il s'agit de la commande suivante : hdparm -i /dev/hda | grep SerialNo.
    Cette commande permet de récupérer le numéro de série d'un disque dur
    ide.
    Je lance la commande par un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Runtime r = null;
    Process p = null;
    p = r.exec("hdparm -i /dev/hda | grep SerialNo");
    Cela ne fonctionne pas et je me demande bien pourquoi,
    une commande telle que p = r.exec("env"); fonctionnant très bien.

    Du coup, je suis obligé d'encapsuler la commande hdparm -i /dev/hda |
    grep SerialNo dans un script shell et de lancer ce shell depuis
    la commande p = r.exec .

    Bien malheureux et guère pratique si je veux exécuter plusieurs
    commandes shell.

    Peut être n'est ce pas le bon procédé pour lancer une commande shell avec paramètres.
    Une idée ?

    Marc

    Message édité par Miss Gaelle : Balises code ajoutées, ajout de tag dans le titre.

  2. #2
    Membre expérimenté Avatar de herve91
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 282
    Points : 1 608
    Points
    1 608
    Par défaut
    Il faut passer par un shell pour interpréter le caractère |
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    p = r.exec(new String[] {"/bin/sh", "-c hdparm -i /dev/hda | grep SerialNo"});

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    21
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 21
    Points : 15
    Points
    15
    Par défaut lancement d'une commande Unix ou LInux depuis Java
    Merci pour cette réponse rapide et efficace.

    Mon problème n'est cependant pas tout à fait résolu, voici le nouveau code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    p = r.exec(new String[] {"/bin/sh", "-c hdparm -i /dev/hda | grep SerialNo"});
    br = new BufferedReader(new InputStreamReader(p.getInputStream()));
    REGEX="SerialNo";
    INPUT = br.readLine();
    while(INPUT=="")
      p.waitFor();
    System.out.println(INPUT);
    Je ne comprends pas d'où vient l'erreur,
    car la commande hdparm -i /dev/hda | grep SerialNo s'exécute parfaitement depuis le shell,
    et je lance ce programme Java en root !

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    21
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 21
    Points : 15
    Points
    15
    Par défaut Sujet du message: lancement d'une commande Unix ou LInux de
    Une petite précision,
    j'ai modifié le code pour voir quel est le retour de la fonction waitFor() du Process.
    waitFor retourne bien la valeur 0, ce qui indique d'après l'API Java une valeur de retour normale.

    -Marc

  5. #5
    Membre habitué

    Profil pro
    Inscrit en
    Août 2005
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 118
    Points : 142
    Points
    142
    Par défaut
    pourquoi met-tu Runtime a null ?

    Peut-être qu'avec un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Runtime r = Runtime.getRuntime();
    Ça irai mieux :

    A+
    Joris

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    21
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 21
    Points : 15
    Points
    15
    Par défaut
    heu, merci pour ta remarque, c'est indubitable ca irait mieux d-jo ;-) !
    Une erreur de copier-coller.
    Après un peu de recherche (besoin de me motiver moi), le code marche si le processus p est défini comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    p = r.exec(new String[] {"/bin/sh", "-c", "hdparm -i /dev/hda | grep SerialNo"});
    Marc[/code]

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    21
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 21
    Points : 15
    Points
    15
    Par défaut [Résolu]lancement d'une commande Unix ou LInux depuis Java
    de fait le problème est résolu.
    Chouette, un problème de moins dans la vie

    Marc

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

Discussions similaires

  1. Débutant : Encapsuler une commande unix.
    Par berceker united dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 30/01/2015, 18h58
  2. Explication d'une commande unix
    Par claralavraie dans le forum Linux
    Réponses: 4
    Dernier message: 14/02/2006, 17h22
  3. Réponses: 22
    Dernier message: 09/12/2005, 21h27
  4. [Plugin][Débutant] Lancement d'une appli Java avec un plugin
    Par antares24 dans le forum Eclipse Platform
    Réponses: 1
    Dernier message: 29/07/2004, 14h18
  5. Lancement d'une commande sur un serveur Unix
    Par lper dans le forum Web & réseau
    Réponses: 2
    Dernier message: 29/07/2004, 13h58

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