Bonjour à tous,
Je cherche le moyen d'exécuter un commande linux depuis mon application java et ensuite de récupérer le résultat de cette commande.
Exemple :
exécuter --> ifconfig
et récupérer ce qui en ressort
Merci d'avance.
Version imprimable
Bonjour à tous,
Je cherche le moyen d'exécuter un commande linux depuis mon application java et ensuite de récupérer le résultat de cette commande.
Exemple :
exécuter --> ifconfig
et récupérer ce qui en ressort
Merci d'avance.
à mon avis, il faut se pencher sur la classe Runtime .
ça donne un code qui ressemble à ça:
il ne reste plus qu'à lire sortie pour avoir les informations obtenues par la commande.Code:
1
2
3 Runtime rt=Runtime.getRuntime(); Process commande= rt.exec("ifconfig"); OutputStream sortie= commande.getOutputStream();
Salut,
C'est getInputStream() pour le flux de sortie du programme (oui oui, même si ca semble bizarre) ;)Citation:
Envoyé par afrikha
Sinon il ne faut pas oublier de lire le flux de sortie d'erreur getErrorStream() dans un thread séparé afin d'éviter les interblocages, et de fermer le flux d'entrée getOutputStream() s'il n'est pas utilisé...
Toutefois avec Java 5.0 la meilleure solution est d'utiliser la classe ProcessBuilder qui simplifie un peu l'exécution des process (en permettant de rediriger le flux d'erreur vers le flux stdout afin de simplifier la lecture) :
a++Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 try { ProcessBuilder pb = new ProcessBuilder("cmd", "/C", "ipconfig"); pb.redirectErrorStream(true); Process process = pb.start(); InputStream processOutput = process.getInputStream(); try { process.getOutputStream().close(); // fermeture du flux stdin inutilisé // lecture du flux par bloc de 512 bytes : byte[] b = new byte[512]; int len; while ( ( len = processOutput.read(b) ) > 0 ) { System.out.write(b, 0, len); } } finally { processOutput.close(); } } catch (IOException e) { e.printStackTrace(); }
Ok, merci adiGuba ;)
je suis d'accord avec toi, c'est un peu contre nature d'utiliser un InputStream 8O
Et les paramètre de ProcessBuilder tu les trouve comment pour linux ??
en regardant la javadoc correspondant à la version de jdk installé. C'est la même pour tous les OS.Citation:
Envoyé par clementv