¿Cómo ejecutar un script de shell Unix desde código Java?
Resuelto
asked hace 15 años
•
0 respuestas
Es bastante sencillo ejecutar un comando Unix desde Java.
Runtime.getRuntime().exec(myCommand);
Pero, ¿es posible ejecutar un script de shell Unix desde código Java? En caso afirmativo, ¿sería una buena práctica ejecutar un script de shell desde el código Java?
Aceptado
Realmente deberías mirar Process Builder . Realmente está diseñado para este tipo de cosas.
ProcessBuilder pb = new ProcessBuilder("myshellScript.sh", "myArg1", "myArg2");
Map<String, String> env = pb.environment();
env.put("VAR1", "myValue");
env.remove("OTHERVAR");
env.put("VAR2", env.get("VAR1") + "suffix");
pb.directory(new File("myDir"));
Process p = pb.start();
También puede utilizar la biblioteca ejecutiva de Apache Commons .
Ejemplo :
package testShellScript;
import java.io.IOException;
import org.apache.commons.exec.CommandLine;
import org.apache.commons.exec.DefaultExecutor;
import org.apache.commons.exec.ExecuteException;
public class TestScript {
int iExitValue;
String sCommandString;
public void runScript(String command){
sCommandString = command;
CommandLine oCmdLine = CommandLine.parse(sCommandString);
DefaultExecutor oDefaultExecutor = new DefaultExecutor();
oDefaultExecutor.setExitValue(0);
try {
iExitValue = oDefaultExecutor.execute(oCmdLine);
} catch (ExecuteException e) {
System.err.println("Execution failed.");
e.printStackTrace();
} catch (IOException e) {
System.err.println("permission denied.");
e.printStackTrace();
}
}
public static void main(String args[]){
TestScript testScript = new TestScript();
testScript.runScript("sh /root/Desktop/testScript.sh");
}
}
Para mayor referencia, también se proporciona un ejemplo en Apache Doc .
Creo que has respondido tu propia pregunta con
Runtime.getRuntime().exec(myShellScript);
En cuanto a si es una buena práctica... ¿qué estás intentando hacer con un script de shell que no puedes hacer con Java?