post icon

Ejecutar Bash desde Java y Capturar Retorno en un Buffer

Creo que esto no es algo muy común para desarrollar, pero extrañamente lo necesite en el trabajo, supongo que a más de uno le servirá. Básicamente el código lo que hace es llamar a Bash de GNU/Linux, y permite ejecutar comandos nativos del Sistema Operativo, además de capturar el retorno de la ejecución del comando en un buffer e imprimirlo en pantalla.

Es sabido que Java es de ejecución Multiplataforma, pero en este caso sólo funcionará sobre cualquier distro GNU/Linux que tenga instalado shell bash, por lo tanto incluyo una pequeña validación del mismo para evitar una excepción descontrolada si se ejecuta en otras plataformas.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public void EjecutarBash() {
	if (SO.ConsultarSO().indexOf("Linux") != -1) {
		try {
			String[] command = {"sh","-c","ls /dev/sd*"};
			Process process = Runtime.getRuntime().exec(command);
 
			InputStream is = process.getInputStream();
			byte[] buffer = new byte[1024];	
 
			for(int count = 0; (count = is.read(buffer)) >= 0;)
			{ System.out.write(buffer, 0, count); } // end for
		} catch (Exception e) {
			e.printStackTrace();
		} // end try
	} else {
		System.out.println("No es un sistema operativo basado en GNU/Linux");
	} // end if
} // end EjecutarBash
 
public static String ConsultarSO() {
	return System.getProperty("os.name");
} // end ConsultarSO

Comentarios desde Facebook:

  1. avatar
    Kenai MEXICO Google Chrome Windows
    26 octubre 2016 at 18:17 #

    Muchas Gracias! me sirvió bastante.

  2. avatar
    Antonio SPAIN Google Chrome Windows
    22 abril 2013 at 12:47 #

    Buenísimo, muchas gracias.

Responder