Anda tidak dapat menggunakan PIPA di dalam Runtime.getRuntime().exec()
seperti yang Anda lakukan dalam contoh Anda. PIPA adalah bagian dari cangkang.
Anda bisa melakukan keduanya
- Masukkan perintah Anda ke skrip shell dan jalankan skrip shell itu dengan
.exec()
atau -
Anda dapat melakukan sesuatu yang mirip dengan yang berikut
String[] cmd = { "/bin/bash", "-c", "echo password | python script.py '" + packet.toString() + "'" }; Runtime.getRuntime().exec(cmd);
Jawaban @ Alper seharusnya berhasil. Lebih baik lagi, jangan gunakan skrip shell dan pengalihan sama sekali. Anda dapat menulis kata sandi langsung ke proses 'stdin menggunakan (nama yang membingungkan) 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();
Anda akan melakukan yang lebih buruk daripada mencoba menyematkan jython dan menjalankan skrip Anda. Contoh sederhana akan membantu:
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");
Jika Anda membutuhkan bantuan lebih lanjut, tinggalkan komentar. Ini tidak membuat proses tambahan.
node.js:tidak dapat menemukan modul 'permintaan'
Bagaimana cara membuat skrip Python dijalankan sebagai layanan?