GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo ejecutar el script de Python desde Java?

No puedes usar el PIPE dentro del Runtime.getRuntime().exec() como lo haces en tu ejemplo. PIPE es parte del caparazón.

Podrías hacer cualquiera

  • Coloque su comando en un script de shell y ejecute ese script de shell con .exec() o
  • Puedes hacer algo similar a lo siguiente

    String[] cmd = {
            "/bin/bash",
            "-c",
            "echo password | python script.py '" + packet.toString() + "'"
        };
    Runtime.getRuntime().exec(cmd);
    

La respuesta de @Alper debería funcionar. Sin embargo, mejor aún, no use un script de shell y redirección en absoluto. Puede escribir la contraseña directamente en la entrada estándar del proceso usando el (nombre confuso) Process.getOutputStream() .

Process p = Runtime.exec(
    new String[]{"python", "script.py", packet.toString()});

BufferedWriter writer = new BufferedWriter(
    new OutputStreamWriter(p.getOutputStream()));

writer.write("password");
writer.newLine();
writer.close();

Haría algo peor que intentar incrustar jython y ejecutar su script. Un ejemplo simple debería ayudar:

ScriptEngine engine = new ScriptEngineManager().getEngineByName("python");

// Using the eval() method on the engine causes a direct
// interpretataion and execution of the code string passed into it
engine.eval("import sys");
engine.eval("print sys");

Si necesitas más ayuda, deja un comentario. Esto no crea un proceso adicional.


Linux
  1. ¿Cómo ejecutar Sh Script desde un acceso directo de escritorio?

  2. ¿Cómo obtener resultados de gdb.execute en PythonGDB (GDB 7.1)?

  3. Cómo ejecutar el archivo python en linux

  4. Ejecutar un script de Python desde PHP

  5. ¿Cómo ejecutar un script bash?

Cómo ejecutar un comando de Shell con Python

Cómo ejecutar un script de Python en PHP

¿Cómo ejecutar un comando en un script de Shell?

Cómo conectarse a SQL Server desde Linux

¿Cómo ejecutar código en el shell de Django mediante un script de python externo?

¿Cómo depuro un trabajo advenedizo?