[résolu]Shell linux dans un programme Java

Shell linux dans un programme Java [résolu] - Java - Programmation

Marsh Posté le 24-01-2007 à 22:11:06    

Bonsoir,
Je suis en train d'écrire un programme Java qui fonctionnera sous Linux, et j'aimerais ajouter un shell linux soit pour excecuter des commandes en local soit via ssh à travers le réseau. Exécuter les commandes n'est pas un problème (avec entre autre Runtime.getRuntime().exec() ...) mais je n'arrive absolument pas à afficher le retour dans ces commandes.
J'aimerais donc en executant ces commandes avoir un retour dans la console (et après pourquoi pas dans le programme mais cest pas le plus important) depuis laquelle j'ai lancé le programme Java. Si quelqu'un a une idée à propos de ca, je suis preneur.
 
Merci d'avance.
 
Bonne soirée.


Message édité par Tom_ le 26-01-2007 à 19:28:25
Reply

Marsh Posté le 24-01-2007 à 22:11:06   

Reply

Marsh Posté le 24-01-2007 à 22:33:50    

As-tu remarqué que Runtime.exec te renvoie un objet de type Process ?
http://java.sun.com/j2se/1.4.2/doc [...] ocess.html
 
Avec ca, tu peux récuperer les flux d'entrée/sorties, et t'en fait ce que bon te semble.

Reply

Marsh Posté le 24-01-2007 à 23:43:33    

Ouai j'ai vu ca.
J'avais essayé avec getInputStream() mais sans résultat (ca m'affichait que des adresses mémoires :/ ... je suis un peu noob :D).  
 
Là je viens de faire des recherches et je suis tombé pour la première fois sur cette page : http://ydisanto.developpez.com/tut [...] /runtime/.
 
Donc j'ai essayé et ca marche à peu près. Faut que j'approfondisse. Le problème cest que je ne comprends pas vraiment tout ce qu'il raconte sur la page. :whistle:  
 
Si quelqu'un a une autre solution qui marche niquel je veux bien.
 
Merci pour ta réponse.


Message édité par Tom_ le 24-01-2007 à 23:44:35
Reply

Marsh Posté le 24-01-2007 à 23:54:10    

solution: apprendre a se servir des flux
 
déjà, toi, il te faut un outputstream (l'input, c'est l'entrée du process, le clavier, quoi), et surtout, pas l'afficher, mais le lire.

Reply

Marsh Posté le 25-01-2007 à 00:07:01    

C'est clair faut que je me documente sur les flux.
 
Dans mon cas, il faut bien un inputstream :  

Citation :

Remarque : au premier abord il peut paraître étrange de récupérer un InputStream pour le flux de sortie standard. Cependant il faut bien se placer au niveau de l'application Java.  
 En effet, il s'agit de la sortie standard de l'application externe, l'application Java va lire ce flux qui est donc de son point de vue (en fait le notre) un flux d'entrée (idem pour le flux d'erreur). De même pour l'entrée standard de l'application externe, du point de vue de l'application Java il s'agit d'un flux de sortie puisqu'elle y écrit (d'où le OutputStream).


Message édité par Tom_ le 25-01-2007 à 00:07:38
Reply

Marsh Posté le 25-01-2007 à 12:16:44    

Oui, c'est bien ça: http://java.sun.com/j2se/1.4.2/doc [...] utStream()
 
Un peu débile, mais bon, soit. :spamafote:
 
Non, de là, ça doit marcher. Essaye d'exécuter "cmd /c dir", par exemple, ou un simple exe qui sort du texte dans la console. Ca doit marcher.
 
Ou fait pêter ton code.
 
Idéalement, je dirais de lire les 2 streams (in et err) dans 2 threads séparées.

Reply

Marsh Posté le 25-01-2007 à 19:20:33    

J'ai utilisé ProcessBuilder, qui permet d'afficher à la fois le flux de sortie normal et celui d'erreurs proprement.

Reply

Marsh Posté le 25-01-2007 à 20:10:17    

Bon, et quoi? Marche, marche pas?

Reply

Marsh Posté le 26-01-2007 à 19:27:57    

Ca marche niquel. Merci pour vos réponses. ;)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed