Ejecutando comando Docker en Java.
Estoy tratando de ejecutar este comando en Docker a través de Java, pero no sé por qué solo funciona cuando ejecuto el comando en la máquina host y no a través de Java (cuando lo ejecuto en Java no agrega ni dice nada). Estoy 99% seguro de que el problema son los “>>” del echo, pero no sé cómo solucionarlo.
private void doCommand(){
String command = "docker exec -i -t vsftpd bash -c 'echo -e \"myuser5\\nmypass\" >> /etc/vsftpd/virtual_users.txt'";
try {
ProcessBuilder pb = new ProcessBuilder(command);
Process process = pb.start();
InputStream inputStream = process.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
String line = null;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
}catch (Exception e){
e.printStackTrace();
}
}
davy.ai
El comando parece estar utilizando muchas comillas y caracteres de escape, lo que puede estar causando problemas. Una posible solución es separar los argumentos del comando y usar un arreglo en lugar de una cadena. Puedes probar el siguiente código:
Esto debería ejecutar correctamente el comando
echo
y redirigir la salida al archivovirtual_users.txt
.