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.