Runtime.exec (String commande) - Cette fonction donnes la possibilité d'executer une commande spécifiée comme argument dans un processus isolée.
public Process exec(String commande)
commande - la commande à executer
Cette méthode retourne un objet ( processus )
Dans cette exemple, Nous allons exécuter la commande ls -l / qui nous permet de lister tous les dossiers présent dans le fichier mère et montrer leurs permissions.
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class ExecuterUneCommandeShellRuntimeExec { public static void main(String[] args) { // TODO Auto-generated method stub try { Process processus = Runtime.getRuntime().exec("ls -l /"); StringBuilder resultat = new StringBuilder(); BufferedReader lecteur = new BufferedReader(new InputStreamReader(processus.getInputStream())); String ligne; while ((ligne = lecteur.readLine()) != null) { resultat.append(ligne + "\n"); } int valeurDeSortie = processus.waitFor(); if (valeurDeSortie == 0) { System.out.println("Success!"); System.out.println(resultat); System.exit(0); } else { System.out.println("Quelquechose de pas normal s'es produit :( "); } } catch (IOException e) { e.printStackTrace(); } catch (InterruptedException e) { e.printStackTrace(); } } }
Output:
vpn-133-230-1-200:~ softorks$ ls -l / total 1544 drwxr-xr-x 4 softorks staff 128 Aug 20 2018 Application Data drwx------ 5 softorks staff 160 Jan 8 2019 Applications drwx------+ 9 softorks staff 288 Sep 24 11:03 Desktop drwx------+ 15 softorks staff 480 Sep 24 09:27 Documents drwx------+ 197 softorks staff 6304 Oct 24 09:25 Downloads drwx------@ 76 softorks staff 2432 Sep 18 06:39 Library drwx------+ 5 softorks staff 160 Aug 18 21:34 Movies drwx------+ 4 softorks staff 128 Jan 4 2017 Music drwx------+ 6 softorks staff 192 Aug 18 21:34 Pictures drwxr-xr-x 3 softorks staff 96 May 16 09:26 Postman drwxr-xr-x+ 5 softorks staff 160 Dec 9 2016 Public drwxr-xr-x 4 softorks staff 128 Jun 11 2018 VirtualBox VMs drwxr-xr-x 25 softorks staff 800 Jul 9 04:13 eclipse-workspace -rw-r--r-- 1 softorks staff 66191 Oct 22 2017 hs_err_pid17198.log -rw-r--r-- 1 softorks staff 134743 Jul 16 2018 hs_err_pid1912.log -rw-r--r-- 1 softorks staff 76625 Sep 18 08:22 hs_err_pid1913.log -rw-r--r-- 1 softorks staff 75519 Aug 27 21:48 hs_err_pid50642.log -rw-r--r-- 1 softorks staff 75665 Oct 2 09:49 hs_err_pid6050.log -rw-r--r-- 1 softorks staff 75807 Oct 8 05:25 hs_err_pid65641.log -rw-r--r-- 1 softorks staff 76034 Sep 6 19:07 hs_err_pid66238.log -rw-r--r-- 1 softorks staff 76001 Aug 20 10:06 hs_err_pid74698.log drwxrwxr-x 3 softorks staff 96 Jul 29 18:25 tmp
Dans cette exemple, nous allons la commande traceroute, cette commande nous permet de visualiser les addresses IP de tous les routeurs présent entre une source et une destination.
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class ExecuterUneCommandeShellRuntimeExec { public static void main(String[] args) { // TODO Auto-generated method stub try { Process processus = Runtime.getRuntime().exec("traceroute google.com"); StringBuilder resultat = new StringBuilder(); BufferedReader lecteur = new BufferedReader(new InputStreamReader(processus.getInputStream())); String ligne; while ((ligne = lecteur.readLine()) != null) { resultat.append(ligne + "\n"); } int valeurDeSortie = processus.waitFor(); if (valeurDeSortie == 0) { System.out.println("Success!"); System.out.println(resultat); System.exit(0); } else { System.out.println("Quelquechose de pas normal s'es produit :( "); } } catch (IOException e) { e.printStackTrace(); } catch (InterruptedException e) { e.printStackTrace(); } } }
Output:
vpn-133-230-1-200:~ softorks$ traceroute softorks.com traceroute to softorks.com (162.241.252.212), 64 hops max, 52 byte packets Success! 1 www.routerlogin.com (192.168.1.1) 1.586 ms 1.026 ms 0.867 ms 2 96.120.5.17 (96.120.5.17) 9.685 ms 9.463 ms 9.450 ms 3 68.86.108.157 (68.86.108.157) 9.274 ms 9.259 ms 10.773 ms 4 ae-127-ar01.b0atlanta.ga.atlanta.comcast.net (68.85.111.57) 10.846 ms 11.614 ms 10.604 ms 5 be-7725-cr02.56marietta.ga.ibone.comcast.net (68.86.93.125) 10.799 ms 12.822 ms 13.043 ms 6 be-11423-cr01.houston.tx.ibone.comcast.net (68.86.85.22) 25.407 ms 24.295 ms 25.082 ms 7 be-12393-pe01.westwaypark.tx.ibone.comcast.net (68.86.82.130) 25.823 ms 29.697 ms 25.908 ms 8 as8075-1.2001sixthave.wa.ibone.comcast.net (75.149.230.54) 24.768 ms 34.744 ms 25.163 ms 9 216.117.50.150 (216.117.50.150) 25.181 ms 26.132 ms 25.555 ms 10 po101.router2b.hou1.net.unifiedlayer.com (162.241.0.9) 30.393 ms 25.708 ms 25.705 ms 11 162-241-150-61.unifiedlayer.com (162.241.150.61) 35.956 ms 162-241-150-63.unifiedlayer.com (162.241.150.63) 29.843 ms 162-241-150-61.unifiedlayer.com (162.241.150.61) 24.475 ms 12 box5741.bluehost.com (162.241.252.212) 24.784 ms 24.953 ms 24.784 ms