Запуск консольной команды из Java-кода
У меня стоит задача запустить из Java-кода вот такую команду:
winpty docker exec -it apache-mbk-corp php html/lara/artisan log:save '{...}'
Как это сделать? Не смог сообразить, как правильно это сделать с помощью класса Runtime
. Пробовал написать скрипт, но тоже не сообразил как его вызвать из Java-кода.
Скрипт (script.sh):
#!C:/Program Files/Git/git-bash.exe
winpty docker exec -it apache-mbk-corp php html/lara/artisan log:save '{...}'
Пробовал вот так:
String s2 = "D:\\CORP\\auto_test\\src\\test\\java\\script.sh";
try
{
System.out.println("start");
String cmd[] = {"bash", s2};
Process proc = Runtime.getRuntime().exec(cmd);
proc.waitFor();
proc.destroy();
System.out.println("success");
}
catch (IOException | InterruptedException e)
{
e.printStackTrace();
}
При выполнении кода из контейнера с джава приложением:
try
{
System.out.println("start");
String[] command = {"bash", "pwd"};
Process proc = Runtime.getRuntime().exec(command);
System.out.write(proc.getInputStream().readAllBytes());
System.out.write(proc.getErrorStream().readAllBytes());
// Process proc = Runtime.getRuntime().exec("./tests/script.sh");
int exitCode = proc.waitFor();
System.out.println("Exit code is " + exitCode);
proc.destroy();
System.out.println("success");
}
catch (IOException | InterruptedException e)
{
e.printStackTrace();
}
System.out.println("---------------------------------");
try
{
System.out.println("start");
String[] command = {"bash", "script_linux.sh"};
Process proc = Runtime.getRuntime().exec(command);
System.out.write(proc.getInputStream().readAllBytes());
System.out.write(proc.getErrorStream().readAllBytes());
// Process proc = Runtime.getRuntime().exec("./tests/script.sh");
int exitCode = proc.waitFor();
System.out.println("Exit code is " + exitCode);
proc.destroy();
System.out.println("success");
}
catch (IOException | InterruptedException e)
{
e.printStackTrace();
}
Выдает: На первый - /bin/pwd: /bin/pwd: cannot execute binary file Exit code is 126 На второй - bash: script_linux.sh: No such file or directory Exit code is 127