PDA

Ver la versión completa : [Ayuda] Java y leer de la consola (Linux)



ChUKii
02/10/2009, 23:22
Buenas,

Estoy haciendo un programita en java para automatizar la obtencion de claves WEP de redes Wifi (por supuesto todo legal :D).

El caso es que me he quedado trabado nada mas empezar :(, os cuento como iria la cosa:
El programita ejecutaria comandos de consola de la suit Aircrack y dependiendo de lo que me devuelva iria ejecutando una u otra cosa automáticamente (un script normal y corriente).

Ejecutar comandos y leer lo que me devuelven no es problema, el problema viene cuando ejecuto el airodump-ng que no es un comando "normal" que se ejecuta, termina y te devuelve los datos sino que se queda ahi rulando.
He probado a mientras esta rulando el airodump-ng ejecutado desde la aplicacion Java a matarlo, a ver si dese Java leo lo último que tenia (con eso me valdria), pero nada.

A ver si alguien se le ocurre alguna solucion :D

:brindis::brindis:

otto_xd
03/10/2009, 01:14
mmm me suena que lanzando el proceso a través de screen puedes quedar ejecutando un proceso de fondo en una terminal virtual que puedes recuperar en cualquier momento, o bien pedir muestras de texto estáticas de lo que hay en pantalla en cada momento, y parsear a placer, pero ya añades una dependencia más a la aplicación xD

Exacto, no se como se lanza ahora mismo en java, pero puedes ejecutar procesos externos y hacer que todo lo que devuelve al buffer se lo zampe tu programa por un buffer de entrada, asi que te pones a procesar eso y te quedas tan pancho xD

ChUKii
03/10/2009, 11:03
Ok, muchas gracias :D mañana os cuento si lo he sacado

:brindis::brindis:


///////////////////////////////
/////NUEVO DIA////
///////////////////////////////



< - >
Na, bloqueado :(

Ejecuto el el comando en otro hilo:


miHilo.Hilando(proceso, runtime);
miHilo.run();


Pero en cuanto intento leer del buffer se queda parado intentando leer:



BufferedReader in = new BufferedReader(new InputStreamReader(proceso.getInputStream()));
System.out.println(in.readLine());


Vamos que sucede igual que antes...es como si no me dejara leer el del buffer del proceso por estar ejecutandose...en cuanto mato el proceso pasa lo mismo que antes, continua la ejecucion del programa.

civantoz, con lo de lanzar el hilo a traves de "screen" a que te refieres? hay una clase llamada asi pero no veo su utilidad :(

:brindis::brindis:

nakio
03/10/2009, 12:31
Lo que quieres hacer se puede hacer con un shell script en cinco minutos.

Saludos, Nakio.

ChUKii
03/10/2009, 12:48
Lo que quieres hacer se puede hacer con un shell script en cinco minutos.

Saludos, Nakio.

Lose, de hecho existen ya scripts que con 4 modificaciones estarian haciendo lo que yo quiero...pero cabezon que es uno de hacerlo en java jeje

:brindis::brindis:

ChUKii
05/10/2009, 21:29
Muchas gracias por explicación civantoz :) no conocia esa aplicacion y desde luego parece muy utili :D :D

Al final lo he sacado de otra forma, en resulta que la salida no la daba por el Inputstream que es la salida normal, sino por la Errorstream. Esto lo descubri al intentar guardar la salida en un fichero, solo la guarda con 2> que es la de error.

Hay que meterle un while(true) para que lea continuamente las lineas nuevas :)

Muchas gracias a todos por la ayuda :D, da gusto que haya gente dispuesta a echarte un cable ;)