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

lanzamiento de un comando via remota utilizando SSH

Estas en el tema de lanzamiento de un comando via remota utilizando SSH en el foro de Java en Foros del Web. Hola a todos. Tengo una aplicación que utiliza una API SSH y lo que quiero es ejecutar un programa estableciendo una conexión SSH con el ...
  #1 (permalink)  
Antiguo 23/10/2007, 13:20
 
Fecha de Ingreso: marzo-2004
Mensajes: 550
Antigüedad: 20 años, 1 mes
Puntos: 7
Sonrisa lanzamiento de un comando via remota utilizando SSH

Hola a todos.

Tengo una aplicación que utiliza una API SSH y lo que quiero es ejecutar un programa estableciendo una conexión SSH con el servidor y lanzando dicho programa.

Esto lo hago bien pero luego tengo un problemilla que es el siguiente:

Establezco la conexión SSH, ejecuto el comando y luego en vez de finalizar el programa tengo obligatoriamente que esperar leyendo de un Inputstream el resultado que de la ejecución del comando que he ejecutado remotamente. Si no me quedo leyendo el resultado directamente el comando nose porque no se me ejecuta.

Y como vereis.... si el programa que he lanzado remotamente tarda 10 horas en acabar (por poner un ejemplo), yo no quiero que se me quede mi aplicación parada esperando a la finalización.

Para que lo entendais mejor, el programa tiene la siguiente pinta:

InputStream in;
//En estas lineas establezco la conexión con el servidor.
ssh enlace_ssh=new ssh("nombreDelServidor","usuario","password");
enlace_ssh.conexion_ssh();
//Aqui le paso el comando a ejecutar. En este caso estoy ejecutando el programa "fichero" que cuelga de mi directorio Home en la maquina linux
in=enlace_ssh.ejecutar_comando("$HOME/fichero");

//Aqui leo la respuesta que me devuelve
byte[] tmp=new byte[1024];

String resultado;
try{
while(true)
{
while(in.available()>0)
{
int i=in.read(tmp, 0, 1024);
if(i<0)break;

}


if(enlace_ssh.channel.isClosed())
{
System.out.println("Canal cerrado");
System.out.println("exit-status:
"+enlace_ssh.channel.getExitStatus());
break;
}
try{Thread.sleep(1000);}
catch(Exception ee){}
}

}catch(Exception e){}


//Aqui cierro la conexion
enlace_ssh.cerrar_conexion();


Yo había probado comentando la parte central de código expuesto antes donde leo el resultado de la ejecución del comando pero entonces no se me ejecuta el comando.
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 13:03.