[JAVA] Récupérer le résultat d'une commande linux?

Récupérer le résultat d'une commande linux? [JAVA] - Java - Programmation

Marsh Posté le 18-04-2005 à 10:06:06    

Bonjour,
 
voilà après avoir utiliser la méthode
 
Runtime.getRuntime()
 
j'aimerai savoir s'il est possible de récupérer ce que retourne la console.
 
Par exemple si je fais un useradd et qu'il existe déjà puis-je le savoir dans le programme java?
 
merci

Reply

Marsh Posté le 18-04-2005 à 10:06:06   

Reply

Marsh Posté le 18-04-2005 à 11:10:25    

M'interesse ca !
 
PS : On peut executer une commande systeme depuis un prog Java ? Suis assez surpris ! Et puis niveau portabilité là...

Reply

Marsh Posté le 18-04-2005 à 11:20:39    

pour l'exécution oui on peut via le Runtime.getRuntime().exec(lacommande);
 

Reply

Marsh Posté le 18-04-2005 à 11:34:48    

Alors moi j'aurais une solution pour toi, mais c'est pas le truc le plus rapide du siècle :
 
Tu redirige la sortie standard de ta commande dans un fichier : ex : useradd toto >> fich.txt
 
puis, dans ton prog java, tu ouvre fich.txt et tu lis le contenu.
 
C'est du bidouillage, mais ca devrais le faire.

Reply

Marsh Posté le 18-04-2005 à 11:47:32    

en <1.5 t'as tout ce qu'il faut là : http://java.sun.com/j2se/1.5.0/doc [...] ocess.html
et 1.5 encore plus facile avec http://java.sun.com/j2se/1.5.0/doc [...] ilder.html
 
Ca vous arracherait la gueule d'au minimum jetter un oeil à la doc des classes que vous utilisez avant de crier au secours? [:mlc]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 18-04-2005 à 13:42:50    

tuxbleu a écrit :

Alors moi j'aurais une solution pour toi, mais c'est pas le truc le plus rapide du siècle :
 
Tu redirige la sortie standard de ta commande dans un fichier : ex : useradd toto >> fich.txt
 
puis, dans ton prog java, tu ouvre fich.txt et tu lis le contenu.
 
C'est du bidouillage, mais ca devrais le faire.


 
 
j'y avais penser à ça mais trop long :)
 
merci the real moins moins mais j'utilisais pas cette classe moi :)


Message édité par Aesthetics le 18-04-2005 à 13:43:36
Reply

Marsh Posté le 18-04-2005 à 14:15:56    

Aesthetics a écrit :

j'y avais penser à ça mais trop long :)


 
Long à programmer ou à l'execution ?
 
 
Paske à programmer, c'est vite fait, à l'exécution, ben c clair que ca sera pas en 1/1000 de secondes, mais ca devrait quand même pas excéder 1 seconde ! A toi de voir si c'est à 1 seconde près.
 
Sinon, dans les solutions plus rapides à l'exécution, mais alors la c du vrai bidouillage :
 
Si tu sais rediriger la sortie standard (>> ) vers un argument d'une fonction (ca je c pas faire), tu pourrais te creer un petit programme client qui ouvre une socket sur ton programme et qui lui envoie un String (celui passé en argumet récupéré par >> )
 
Bon, c moche, et je c meme pas si c'est plus rapide que l'écriture dans le fichier (qui est bien plus rapide et simple a mettre en place) .

Reply

Marsh Posté le 18-04-2005 à 14:17:36    

Aesthetics a écrit :


merci the real moins moins mais j'utilisais pas cette classe moi :)


et Runtime.exec(...) tu crois que ça te renvoyait quoi ?


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 18-04-2005 à 14:18:42    

tuxbleu a écrit :

Long à programmer ou à l'execution ?
 
 
Paske à programmer, c'est vite fait, à l'exécution, ben c clair que ca sera pas en 1/1000 de secondes, mais ca devrait quand même pas excéder 1 seconde ! A toi de voir si c'est à 1 seconde près.
 
Sinon, dans les solutions plus rapides à l'exécution, mais alors la c du vrai bidouillage :
 
Si tu sais rediriger la sortie standard (>> ) vers un argument d'une fonction (ca je c pas faire), tu pourrais te creer un petit programme client qui ouvre une socket sur ton programme et qui lui envoie un String (celui passé en argumet récupéré par >> )
 
Bon, c moche, et je c meme pas si c'est plus rapide que l'écriture dans le fichier (qui est bien plus rapide et simple a mettre en place) .


non seulement c'est moche, completement foireux (spaskoi si t'es en multithread, ou si on lance plusieurs instance de ton appli), et y'a des solutions + simple et + propres en std, cfr la javadoc ...


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 18-04-2005 à 14:20:59    

the real moins moins a écrit :

non seulement c'est moche, completement foireux (spaskoi si t'es en multithread, ou si on lance plusieurs instance de ton appli), et y'a des solutions + simple et + propres en std, cfr la javadoc ...


 
Foireux, c'est sur !
Mais bon, il cherche des soluces, et pour le moment, il a pas grand chose. Alors si je peux lui donner une ou 2 idées...


Message édité par tuxbleu le 18-04-2005 à 16:12:13
Reply

Marsh Posté le 18-04-2005 à 14:20:59   

Reply

Marsh Posté le 18-04-2005 à 14:27:12    

euh, tu sais lire? [:mlc]
j'ai posté les liens de la javadoc, qui n'est autre que la doc des classes utilisées quand on fait un Runtime.exec(...) [:mlc]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 18-04-2005 à 16:14:44    

the real moins moins a écrit :

euh, tu sais lire? [:mlc]
j'ai posté les liens de la javadoc, qui n'est autre que la doc des classes utilisées quand on fait un Runtime.exec(...) [:mlc]


 
 :??: Ben il a dit qu'il voulais pas utiliser les classes de ton lien, alors j'essais juste de donner une ou deux idées (plus ou moins foireuses certe ! ), c'est tout.
 
Faut pas se facher.

Reply

Marsh Posté le 18-04-2005 à 16:26:26    

tuxbleu a écrit :

:??: Ben il a dit qu'il voulais pas utiliser les classes de ton lien, alors j'essais juste de donner une ou deux idées (plus ou moins foireuses certe ! ), c'est tout.
 
Faut pas se facher.


 
nuance, il croyait qu'il utilisait pas cette classe alors que oui
 

Reply

Marsh Posté le 18-04-2005 à 18:02:38    

Je ne sais pas si c'est tjs d'actualité avec 1.5, mais j'avais fait des tests génériques sur l'exécution de processes depuis java, et ça c'est révélé complètement merdique.
 
Dans certains cas particuliers, il était _obligatoire_ de récupérer le contenu de la console pour éviter que le processus ne se bloque...
 
C'était sous XP mais je ne pense pas que ça change fondamentalement quoique ce soit.
 
Si par malheur, tu lances un shell script (ou à tout le moins un batch sous Win selon mes tests) qui lui-même se charge de lancer un autre process (p.e. en ayant préalablement changé certaines variables), je garantis de mauvaises surprises.

Reply

Sujets relatifs:

Leave a Replay

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