martes, 15 de diciembre de 2009

Ejecutar comandos Linux y MS-Dos desde Java













Poder controlar nuestro sistema desde el código de programación puede resultar muy útil en muchos casos. Así como el hecho de conseguir información, por ejemplo, de la configuración de nuestra red para usarlo en nuestras aplicaciones. Ése es el caso que nos ocupa ahora: queremos obtener nuestra dirección IP y configuración de red desde Java. Además, aprovechando la portabilidad de este lenguaje, haremos que la aplicación funcione tanto en Linux, como en Windows.

 

El código


import java.io.*;

public class EjecutarComando {

        public static void main(String args[]) {

                String s = null;

                try {

                        // Determinar en qué SO estamos
                        String so = System.getProperty("os.name");

                        String comando;

                        // Comando para Linux
                        if (so.equals("Linux"))
                                comando = "ifconfig";

                        // Comando para Windows
                        else
                                comando = "cmd /c ipconfig";

                        // Ejcutamos el comando
                        Process p = Runtime.getRuntime().exec(comando);

                        BufferedReader stdInput = new BufferedReader(new InputStreamReader(
                                        p.getInputStream()));

                        BufferedReader stdError = new BufferedReader(new InputStreamReader(
                                        p.getErrorStream()));

                        // Leemos la salida del comando
                        System.out.println("Ésta es la salida standard del comando:\n");
                        while ((s = stdInput.readLine()) != null) {
                                System.out.println(s);
                        }

                        // Leemos los errores si los hubiera
                        System.out
                                        .println("Ésta es la salida standard de error del comando (si la hay):\n");
                        while ((s = stdError.readLine()) != null) {
                                System.out.println(s);
                        }

                        System.exit(0);
                } catch (IOException e) {
                        System.out.println("Excepción: ");
                        e.printStackTrace();
                        System.exit(-1);
                }
        }
}




Felinfo: Java, Linux, Virtualización. Open Source.  ©Template Blogger Green by Dicas Blogger .

TOPO