Java - Executer une command shell avec ProcessBuilder - MacOs

Par Softorks | Août 26, 2019 | Modifié : Août 26, 2019

English | French

ProcessBuilder - Java donne la possibilité d'exécuter des commandes shell programmaticallement. Une des méthode courrament utilisée est la classe ProcessBuilder

1. ProcessBuilder - Implémentation

Dans cet example, Nous exécuterons une commande ping vers google.fr et nous illustrerons le résultat sur la console.

import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;

public class Test2 {
    public static void main (String [] args) throws IOException, InterruptedException{
        
        String [] commande = {"ping", "google.fr"};
        
        ProcessBuilder processusBuilder = new ProcessBuilder(commande); 
        processusBuilder.directory(new File(System.getProperty("user.home")));
        
        try {
            Process processus = processusBuilder.start();
            
            BufferedReader lecteur = new BufferedReader (new InputStreamReader(processus.getInputStream()));
            
            String ligne;
            
            while ((ligne = lecteur.readLine()) != null) {
                System.out.println(ligne);
            }
            
            int codeDeSortie = processus.waitFor(); 
            
            System.out.println ("\nstop avec erreur : " + codeDeSortie);
            
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
                        

Résultat:

PING google.fr (74.125.21.94): 56 data bytes
64 bytes from 74.125.21.94: icmp_seq=0 ttl=43 time=20.508 ms
64 bytes from 74.125.21.94: icmp_seq=1 ttl=43 time=18.310 ms
64 bytes from 74.125.21.94: icmp_seq=2 ttl=43 time=20.880 ms
64 bytes from 74.125.21.94: icmp_seq=3 ttl=43 time=19.307 ms
64 bytes from 74.125.21.94: icmp_seq=4 ttl=43 time=21.668 ms
64 bytes from 74.125.21.94: icmp_seq=5 ttl=43 time=21.370 ms
64 bytes from 74.125.21.94: icmp_seq=6 ttl=43 time=22.013 ms
                        

2. Traceroute Exemple

Dans cette exemple, Nous exécuterons une commande appelée traceroute vers google.fr et nous illustrerons le résultat sur la console.

import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;

public class Test2 {
    public static void main (String [] args) throws IOException, InterruptedException{
        
        String [] commande = {"traceroute", "google.fr"};
        
        ProcessBuilder processusBuilder = new ProcessBuilder(commande); 
        processusBuilder.directory(new File(System.getProperty("user.home")));
        
        try {
            Process processus = processusBuilder.start();
            
            BufferedReader lecteur = new BufferedReader (new InputStreamReader(processus.getInputStream()));
            
            String ligne;
            
            while ((ligne = lecteur.readLine()) != null) {
                System.out.println(ligne);
            }
            
            int codeDeSortie = processus.waitFor(); 
            
            System.out.println ("\nstop avec erreur : " + codeDeSortie);
            
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
                        

Output:

1  alprgaedcraaf01-v2.pmtr.sest.att.com (135.28.160.193)  18.926 ms  18.093 ms  16.599 ms
2  alprgaedcrain01-tenge1-3.pmtr.sest.att.com (135.28.160.40)  18.073 ms  20.699 ms  19.301 ms
3  135.28.172.125 (135.28.172.125)  20.633 ms  14.902 ms  17.817 ms
4  gaalxbm05a-intdef_1-inetpmtrvirt.pst.cso.att.com (144.160.226.53)  17.973 ms  16.154 ms  27.353 ms
5  gaalxbm05a-intdef_1-inetpmtrvirt.pst.cso.att.com (144.160.226.53)  93.864 ms  47.404 ms  18.834 ms
6  gaalxbm05a-intdef_1-inetpmtrvirt.pst.cso.att.com (144.160.226.53)  26.677 ms  24.351 ms  19.749 ms
7  gaalxbm05a-intdef_1-inetpmtrvirt.pst.cso.att.com (144.160.226.53)  16.129 ms  29.481 ms  23.049 ms
8  gaalxbm05a-intdef_1-inetpmtrvirt.pst.cso.att.com (144.160.226.53)  96.747 ms  51.821 ms  15.854 ms
9  gaalxbm05a-intdef_1-inetpmtrvirt.pst.cso.att.com (144.160.226.53)  19.855 ms *  16.980 ms
10  gaalxbm05a-intdef_1-inetpmtrvirt.pst.cso.att.com (144.160.226.53)  20.238 ms  22.404 ms  685.833 ms
11  gaalxbm05a-intdef_1-inetpmtrvirt.pst.cso.att.com (144.160.226.53)  18.249 ms  20.008 ms  22.106 ms

                        

3. Régardez le Tutoriel....