Foros del Web » Programación para mayores de 30 ;) » Java »

[SOLUCIONADO] Ejecutar comando en consola linux

Estas en el tema de Ejecutar comando en consola linux en el foro de Java en Foros del Web. Buenas, Estoy haciendo una aplicación que tiene la opción exportar una base de datos de un servidor local mysql. El código que he diseñado para ...
  #1 (permalink)  
Antiguo 12/06/2015, 13:17
 
Fecha de Ingreso: octubre-2012
Mensajes: 37
Antigüedad: 11 años, 6 meses
Puntos: 0
Ejecutar comando en consola linux

Buenas,

Estoy haciendo una aplicación que tiene la opción exportar una base de datos de un servidor local mysql. El código que he diseñado para realizar dicha exportación es el siguiente:

Código Java:
Ver original
  1. if (buscador.showSaveDialog(this) == JFileChooser.APPROVE_OPTION) {
  2.     try {
  3.         String mysqlDir = getDireccionMysql();
  4.         String comando = mysqlDir + "mysqldump -uroot -X --create-options --databases bd_huella_puerta > " + buscador.getSelectedFile();
  5.            
  6.         ejecuta(comando);
  7.     } catch (IOException ex) {
  8.         JOptionPane.showMessageDialog(this, ex.getMessage(),"Problema al exportar",JOptionPane.ERROR_MESSAGE);
  9.     }
  10. }

La función ejecuta es la siguiente:

Código Java:
Ver original
  1. private void ejecuta (String comando) throws IOException {
  2.     if (System.getProperty("os.name").toLowerCase().contains("win"))
  3.         Runtime.getRuntime().exec("cmd /C " + comando);
  4.     else {
  5.         Runtime.getRuntime().exec(comando);
  6.     }
  7. }

Mi problema está en que si corro la aplicación en Windows, se me realiza la exportación perfectamente. Pero si la ejecuto en Linux no me da ningún error pero tampoco me crea el fichero de exportación.
  • Por último, decir que el comando que me ejecuta para Linux es el siguiente:
    /opt/lampp/bin/mysqldump -uroot -X --create-options --databases bd_huella_puerta > /home/jose/Escritorio/guardado.xml
  • También he probado a que se genere este comando:
    /opt/lampp/bin/mysqldump -uroot -X --create-options --databases bd_huella_puerta | tee /home/jose/Escritorio/guardado.xml

Si ejecuto estos mismos comandos en la consola de linux directamente todo funciona correctamente.

¿Alguien podría decirme dónde estoy fallando?
  #2 (permalink)  
Antiguo 13/06/2015, 00:06
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 6 meses
Puntos: 454
Respuesta: Ejecutar comando en consola linux

Hola:

Cuando ejecutas un comando desde Runtime..exec(), la salida estándar se redirige a tu programa java, por lo que tu comando linux "mysqldump ... .> fichero" no redirige la salida al fichero, sino a tu programa java. Tendrías que leerla y escribirla en fichero.

Aquí tienes cómo hacerlo http://chuwiki.chuidiang.org/index.p...MySQL_con_Java

Se bueno.
__________________
Apuntes Java
Wiki de Programación

Última edición por chuidiang; 13/06/2015 a las 10:27
  #3 (permalink)  
Antiguo 13/06/2015, 04:15
 
Fecha de Ingreso: octubre-2012
Mensajes: 37
Antigüedad: 11 años, 6 meses
Puntos: 0
Respuesta: Ejecutar comando en consola linux

Vale

Muchas gracias por tu explicación ahora se ve todo muy claro. Le he echado un ojo al código que me pasas y me sirve, da gusto que te respondan así.

Seré bueno.

Etiquetas: comando, consola, linux, sql, string
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:01.