Ver Mensaje Individual
  #5 (permalink)  
Antiguo 05/05/2010, 16:02
fiurer87
 
Fecha de Ingreso: octubre-2009
Mensajes: 2
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Ejecutar comandos de Linux en Java

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