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

Ejecutar comandos de Linux en Java

Estas en el tema de Ejecutar comandos de Linux en Java en el foro de Java en Foros del Web. compañeros hace un tiempo hice una aplicacion que hacia telnet desde la aplicacion java en windos, ahora lo necesito en linux. antes hacia esto: String ...
  #1 (permalink)  
Antiguo 28/07/2009, 09:52
Avatar de lobo_php  
Fecha de Ingreso: noviembre-2007
Ubicación: Cali-Colombia
Mensajes: 1.869
Antigüedad: 16 años, 5 meses
Puntos: 75
[SOLUCIONADO] Ejecutar comandos de Linux en Java

compañeros hace un tiempo hice una aplicacion que hacia telnet desde la aplicacion java en windos, ahora lo necesito en linux.
antes hacia esto:

String comando = "cmd /c start telnet "+ip;

pr = Runtime.getRuntime().exec(comando);

y listo, ahora en linux debo hacer algo mas o menos asi:

String[] comando = {"sh","-c","telnet "+ip};
pr = Runtime.getRuntime().exec(comando);

ó

String[] comando = {"sh","-c","telnet "+ip};
final Process pr = Runtime.getRuntime().exec(comando);


pero cuando intento hacer esto se me queda ahi colgado, como si se bloqueara la aplicacion y no hace nada mas, nisiquiera deja cerrarla, me toca cerrarla interrumpiendo la ejecucion desde el netbeans.
__________________
Cabuntu.org - Difundiendo Software Libre en Cali, Colombia
Usuario Linux # 483175

Última edición por lobo_php; 11/08/2009 a las 15:33 Razón: UJU!!!
  #2 (permalink)  
Antiguo 11/08/2009, 09:41
Avatar de lobo_php  
Fecha de Ingreso: noviembre-2007
Ubicación: Cali-Colombia
Mensajes: 1.869
Antigüedad: 16 años, 5 meses
Puntos: 75
Respuesta: Ejecutar comandos de Linux en Java

le estoy haciendo asi:

String comando = "sh -c start telnet "+ip;

pero pasa como si lo hiciera y no lo hace.

alguien sabe q podria pasar?

gracias.
__________________
Cabuntu.org - Difundiendo Software Libre en Cali, Colombia
Usuario Linux # 483175
  #3 (permalink)  
Antiguo 11/08/2009, 15:18
Avatar de lobo_php  
Fecha de Ingreso: noviembre-2007
Ubicación: Cali-Colombia
Mensajes: 1.869
Antigüedad: 16 años, 5 meses
Puntos: 75
Respuesta: Ejecutar comandos de Linux en Java

alguien quiere colaborar?
http://foro.chuidiang.com/java-j2se/...pero-en-linux/

ya casi le atino.
necesito de la ayuda de los inquietos :D
__________________
Cabuntu.org - Difundiendo Software Libre en Cali, Colombia
Usuario Linux # 483175
  #4 (permalink)  
Antiguo 11/08/2009, 15:32
Avatar de lobo_php  
Fecha de Ingreso: noviembre-2007
Ubicación: Cali-Colombia
Mensajes: 1.869
Antigüedad: 16 años, 5 meses
Puntos: 75
Respuesta: Ejecutar comandos de Linux en Java

jajaj compaz, ya estuvo,

UJU!
solo hay que poner esto:

String comando [] = {"gnome-terminal","-e","telnet "+ip};

siendo ip la variable que contiene como valor la ip a la que nos conectaremos.


saludos y ojala a alguien le sirva.
__________________
Cabuntu.org - Difundiendo Software Libre en Cali, Colombia
Usuario Linux # 483175
  #5 (permalink)  
Antiguo 05/05/2010, 16:02
 
Fecha de Ingreso: octubre-2009
Mensajes: 2
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Ejecutar comandos de Linux en Java

Hola a todos, esta es mi propuesta para ejecutar comandos UNIX desde JAVA:

Código:
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;

public class Ejecutor{
    
    //No defino constructor puesto que es una CLASE como HERRAMIENTA
    //tambien sugiero hacer que todo sea static

    //Esta funcion devuelve un proceso que es la ejecucion del comando
    //que se le pasa como argumento con el nombre c
    public Process comando(String c) throws IOException{
        return Runtime.getRuntime().exec(c);
    }
    
    
    //Un lector de la salida que provoca el comando
    public BufferedReader salidaComando(Process p){
        return new BufferedReader(new InputStreamReader(p.getInputStream()));
    }
    
    //Un lector de los errores que pudieron cometerse al ejecutar el comando
    public BufferedReader errorComando(Process p){
        return new BufferedReader(new InputStreamReader(p.getErrorStream()));
    }
    
    //Tranforma los Buffers en texto legible
    public String leerBufer(BufferedReader b) throws IOException{
        String aux = "", aux2 = "";
        while( (aux2 = b.readLine()) != null ){
            aux+=String.format(" %s \n",aux2);
        }
        if(aux == "") return "SIN ERRORES!";
        return aux;
    }
    
    //Nuestro famoso main para ejecutarlo
    public static void main(String[] arg){
        Ejecutor ejecutor = new Ejecutor();
        
        try{
            //En la siguiente linea le paso el siguiente comando
            // ls /etc/init.d que mostrara todos los demonios que estan corriendo
            // en el sistema.
            //ahora falta que ustedes pongan lo que requieran
            Process p = ejecutor.comando("ls /etc/init.d");
            System.out.println("Salida comando:");
            System.out.println(ejecutor.leerBufer(ejecutor.salidaComando(p)));
            System.out.println("Errores comando:");
            System.out.println(ejecutor.leerBufer(ejecutor.errorComando(p)));
        } catch(IOException e){
            System.out.println("No se ejecuto correctamente por las sgtes razones: ");
            e.printStackTrace();
            System.exit(0);
        }
        
    }
}
Espero les sirva de ayuda :)

Atte: Roberto
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 00:00.