Hola a todos, esta es mi propuesta para ejecutar comandos UNIX desde JAVA:
Código:
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class Ejecutor{
//No defino constructor puesto que es una CLASE como HERRAMIENTA
//tambien sugiero hacer que todo sea static
//Esta funcion devuelve un proceso que es la ejecucion del comando
//que se le pasa como argumento con el nombre c
public Process comando(String c) throws IOException{
return Runtime.getRuntime().exec(c);
}
//Un lector de la salida que provoca el comando
public BufferedReader salidaComando(Process p){
return new BufferedReader(new InputStreamReader(p.getInputStream()));
}
//Un lector de los errores que pudieron cometerse al ejecutar el comando
public BufferedReader errorComando(Process p){
return new BufferedReader(new InputStreamReader(p.getErrorStream()));
}
//Tranforma los Buffers en texto legible
public String leerBufer(BufferedReader b) throws IOException{
String aux = "", aux2 = "";
while( (aux2 = b.readLine()) != null ){
aux+=String.format(" %s \n",aux2);
}
if(aux == "") return "SIN ERRORES!";
return aux;
}
//Nuestro famoso main para ejecutarlo
public static void main(String[] arg){
Ejecutor ejecutor = new Ejecutor();
try{
//En la siguiente linea le paso el siguiente comando
// ls /etc/init.d que mostrara todos los demonios que estan corriendo
// en el sistema.
//ahora falta que ustedes pongan lo que requieran
Process p = ejecutor.comando("ls /etc/init.d");
System.out.println("Salida comando:");
System.out.println(ejecutor.leerBufer(ejecutor.salidaComando(p)));
System.out.println("Errores comando:");
System.out.println(ejecutor.leerBufer(ejecutor.errorComando(p)));
} catch(IOException e){
System.out.println("No se ejecuto correctamente por las sgtes razones: ");
e.printStackTrace();
System.exit(0);
}
}
}
Espero les sirva de ayuda :)
Atte: Roberto