[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:
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.
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:
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 !
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
[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