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

ejecutar comandos desde java

Estas en el tema de ejecutar comandos desde java en el foro de Java en Foros del Web. hola!! estoy intentando ejecutar unos comandos desde mi aplicacion web a traves de java, pero no he conseguido ejecutar uno: String cmd="mysqldump --password=cristina --user=root proyecto ...
  #1 (permalink)  
Antiguo 23/10/2007, 05:26
Avatar de cris_maco  
Fecha de Ingreso: abril-2007
Ubicación: Salamanca
Mensajes: 254
Antigüedad: 17 años
Puntos: 0
ejecutar comandos desde java

hola!!

estoy intentando ejecutar unos comandos desde mi aplicacion web a traves de java, pero no he conseguido ejecutar uno:

String cmd="mysqldump --password=cristina --user=root proyecto > cristina.sql";
try {

//Creamos el proceso
Process p=Runtime.getRuntime().exec(cmd);
//Esperamos a que acabe para ejecutar el siguiente
// p.waitFor();


} catch (IOException ex) {
ex.printStackTrace();
}

segun he visto por ahi me parece que no se ejecuta porque no puede hacer la redireccion, segun comentan se podria hacer mediante un .bat, pero no se muy bien como hacerlo. si alquien supiera como hacerlo para hacer copias de seguridad se lo agradeceria mucho.
gracias
  #2 (permalink)  
Antiguo 23/10/2007, 06:14
Avatar de elAntonie  
Fecha de Ingreso: febrero-2007
Mensajes: 894
Antigüedad: 17 años, 2 meses
Puntos: 10
Re: ejecutar comandos desde java

Wenas

Con que tienes problemas cris?? con el bat??

Te creas el fichero bat con el mismo comando que tienes, lo metes en una ruta que tengas incluida en el classpath y haces la llamada con

String cmd = "cristina.bat";
...
Runtime.getRuntime().exec(cmd);


Saludos.
  #3 (permalink)  
Antiguo 23/10/2007, 11:08
Avatar de cris_maco  
Fecha de Ingreso: abril-2007
Ubicación: Salamanca
Mensajes: 254
Antigüedad: 17 años
Puntos: 0
Re: ejecutar comandos desde java

tengo problemas para poner la ruta adecuada, ya que el .bat esta bien pero no me lo encuentra. Se supone que tiene que estar en la misma donde estan las clases desde donde se ejecuta el comando?
porque he metido el .bat en montones de sitios y nada
  #4 (permalink)  
Antiguo 24/10/2007, 06:54
Avatar de elAntonie  
Fecha de Ingreso: febrero-2007
Mensajes: 894
Antigüedad: 17 años, 2 meses
Puntos: 10
Re: ejecutar comandos desde java

Cita:
Iniciado por cris_maco Ver Mensaje
tengo problemas para poner la ruta adecuada, ya que el .bat esta bien pero no me lo encuentra. Se supone que tiene que estar en la misma donde estan las clases desde donde se ejecuta el comando?
porque he metido el .bat en montones de sitios y nada
En cualquier ruta uncluida en el classpath. Prueba tambien a incluirla en el path pero no creo que sea eso.

Tambien puedes meter la ruta completa.
  #5 (permalink)  
Antiguo 24/10/2007, 08:28
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Re: ejecutar comandos desde java

Runtime.exec y el classpath no tienen nada que ver, lo que se ejecuta es un proceso de S.O. externo a la JVM asi que no sabe ni lo que es el classpath. Así que hay que pasar la ruta absoluta del fichero a ejecutar o poner dicho fichero en el PATH del sistema.

Por otro lado, si lo que vamos a ejecutar no es un ejecutable (lease un .bat por ejemplo que NO lo es) entonces normalmente hay que llamar al interprete de comandos para que lo ejecute. Con "cmd -c c:\...\fichero.bat".

S!
  #6 (permalink)  
Antiguo 24/10/2007, 10:07
Avatar de cris_maco  
Fecha de Ingreso: abril-2007
Ubicación: Salamanca
Mensajes: 254
Antigüedad: 17 años
Puntos: 0
Re: ejecutar comandos desde java

creo que ya lo consegui, resulta que estaba confundida en saber en que directorio se ejecutaba la aplicacion y yo pense que era en el que me devolvia haciendo getServlet().getServletContext().getRealPath("/"), pero no es en el bin del Tomcat.
Poniendo ahi el bat va bien, pero la cosa se complica si quiero hacerlo desde otro sitio ya que he probado de todo cmd -c, cmd.exe /K, ... tanto con rutas absolutas como relativas y no consigo que funcione y creo que es por el Tomcat y su configuracion.
Asi que una preguntita cuando se hace cmd -c hace que se ejecute en el mismo directorio de la aplicacion o cambia a otro?en el caso de que cambie como puedo saber a donde?
porque asi hago un cd antes de ejecutar el .bat y elijo la ruta que quiero que tenga el .bat, porque ahora como lo tengo solo me funciona si esta en el directorio bin del Tomcat
  #7 (permalink)  
Antiguo 25/10/2007, 02:19
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Re: ejecutar comandos desde java

Por defecto, el "directorio actual" de la JVM es donde se ejecuto el comando que la puso en marcha (normalmente "java -cp .... clase") asi que usando Tomcat suele ser $TOMCAT_HOME/bin ya que alli es donde se ejecuta el comando que lo pone en marcha.

"cmd -c c:\path_completo_al_bat\archivo.bat" tendría que funcionar ya que es lo mismo que llamandolo desde el S.O. Ojo que los espacios en los nombres de directorio etc. pueden hacer cosas raras.

S!
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 11:59.