Foro de elhacker.net

Programación => Java => Mensaje iniciado por: aangrymasther en 4 Marzo 2018, 20:12 pm



Título: Ejecutar programa desde java.
Publicado por: aangrymasther en 4 Marzo 2018, 20:12 pm
Buenas, os quería hacer una pregunta, ¿sabeis como hacer para lanzar un comando que lance un programa python (python <direccion> o ejecute un script de bash (./script)?

Encontré que se podía hacer con esto pero no me funcionó:
Código:
String[] command = {"sh","-c",".python /home/angrymasther/Escritorio/some.py"};
Process p = Runtime.getRuntime().exec(command);
p.waitFor();
El programa funciona sin errores, pero no ejecuta el código python, que debería crear un directorio ejemplo.
Se que el código python no es porque lo e probado xD.
¿Alguna idea? Gracias de antemano.


Título: Re: Ejecutar programa desde java.
Publicado por: rub'n en 4 Marzo 2018, 21:05 pm
Que raro debería de funcionar, quizás es porque no abriste un stream, usa un bloque try with resources es autocloseable linea 27  :xD
Código
  1. import os
  2. from stat import *
  3.  
  4. print "HolA PoC"
  5.  

Código
  1. package testing.foro.ExecPython;
  2.  
  3. import util.ShowData;
  4.  
  5. import javax.swing.*;
  6. import javax.swing.filechooser.FileNameExtensionFilter;
  7. import java.io.BufferedReader;
  8. import java.io.IOException;
  9. import java.io.InputStreamReader;
  10. import java.nio.file.Files;
  11. import java.nio.file.Path;
  12.  
  13. public class EjecutarPython {
  14.  
  15.  
  16.  
  17.    public EjecutarPython() throws InterruptedException, IOException {
  18.  
  19.        final String file = getPath().toAbsolutePath().toString();
  20.  
  21.        //String[] command = {"sh","-c",".python", file};
  22.        String[] command = {"python", file };
  23.  
  24.        Process p = Runtime.getRuntime().exec(command);
  25.        p.waitFor();
  26.        String line = "";
  27.        try(BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()))) {
  28.            while((line = br.readLine()) != null) {
  29.                ShowData.println(line);
  30.            }
  31.        }
  32.        p.destroy();
  33.    }
  34.  
  35.    private Path getPath() {
  36.        JFileChooser chooser = new JFileChooser();
  37.        chooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
  38.        //chooser.setFileFilter(new FileNameExtensionFilter(".py",new String[]{".py"})); please [color=red]FIXME[/color]
  39.        final int result = chooser.showOpenDialog(null);
  40.        if(result == JFileChooser.CANCEL_OPTION) {
  41.            System.exit(2);
  42.        }
  43.        return chooser.getSelectedFile().toPath();
  44.    }
  45.  
  46.        UIManager.setLookAndFeel("javax.swing.plaf.nimbus.NimbusLookAndFeel");
  47.        new EjecutarPython();
  48.    }
  49. }
  50.  

Salida

Código
  1. HolA PoC
  2.  
  3. Process finished with exit code 0
  4.  
  5.  


Título: Re: Ejecutar programa desde java.
Publicado por: aangrymasther en 5 Marzo 2018, 13:40 pm
Hola Rub'n, gracias por tu respuesta. Fue mala mía, funcionó cuando puse una ruta absoluta.


Título: Re: Ejecutar programa desde java.
Publicado por: rub'n en 10 Marzo 2018, 02:51 am
Hola Rub'n, gracias por tu respuesta. Fue mala mía, funcionó cuando puse una ruta absoluta.

hommie, y esto que es? Absoluto o Relativo ?  :o hasta donde se es Absoluto
 

Código
  1. /home/angrymasther/Escritorio/some.py