Con estas dos clases podemos invocar tareas del sistema operativo de forma muy transparente
http://www.devdaily.com/java/edu/java-exec/SystemCommandExecutor.java
http://www.devdaily.com/java/edu/java-exec/ThreadedStreamHandler.java
En entornos Windows
/**
* Ejecuta una tarea en un sistema operativo windows
* @param line comando a ejecutar
*/
public static void execWin(String line){
List<String> commands = new ArrayList<String>();
commands.add("cmd");
commands.add("/c");
commands.add(line);
SystemCommandExecutor commandExecutor = new SystemCommandExecutor(commands);
try {
int result = commandExecutor.executeCommand();
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
StringBuilder stdout = commandExecutor.getStandardOutputFromCommand();
StringBuilder stderr = commandExecutor.getStandardErrorFromCommand();
System.out.println("STDOUT");
System.out.println(stdout);
System.out.println("STDERR");
System.out.println(stderr);
}
En entornos Linux
/**
* Ejecuta una tarea en un sistema operativo Linux
* @param line comando a ejecutar
*/
public static void execLin(String line){
List<String> commands = new ArrayList<String>();
commands.add("/bin/sh");
commands.add("-c");
commands.add(line);
SystemCommandExecutor commandExecutor = new SystemCommandExecutor(commands);
try {
int result = commandExecutor.executeCommand();
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
StringBuilder stdout = commandExecutor.getStandardOutputFromCommand();
StringBuilder stderr = commandExecutor.getStandardErrorFromCommand();
System.out.println("STDOUT");
System.out.println(stdout);
System.out.println("STDERR");
System.out.println(stderr);
}
/**
* Ejecuta una tarea en un sistema operativo Linux
* @param line comando a ajecutar
* @param adminPass clave de administracion del superusuario
*/
public static void execLin(String line, String adminPass){
List<String> commands = new ArrayList<String>();
commands.add("/bin/sh");
commands.add("-c");
commands.add(line);
SystemCommandExecutor commandExecutor = new SystemCommandExecutor(commands,adminPass);
try {
int result = commandExecutor.executeCommand();
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
StringBuilder stdout = commandExecutor.getStandardOutputFromCommand();
StringBuilder stderr = commandExecutor.getStandardErrorFromCommand();
System.out.println("STDOUT");
System.out.println(stdout);
System.out.println("STDERR");
System.out.println(stderr);
}

Deja un comentario