java - 如何从 Java 执行 Python 脚本(通过命令行)?

标签 java python linux

我可以毫无问题地从 Java 执行 lspwd 等 Linux 命令,但无法执行 Python 脚本。

这是我的代码:

Process p;
try{
    System.out.println("SEND");
    String cmd = "/bash/bin -c echo password| python script.py '" + packet.toString() + "'";
    //System.out.println(cmd);
    p = Runtime.getRuntime().exec(cmd); 
    BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
    String s = br.readLine(); 
    System.out.println(s);
    System.out.println("Sent");
    p.waitFor();
    p.destroy();
} catch (Exception e) {}

什么也没发生。它到达了 SEND,但在它之后就停止了...

我正在尝试执行一个需要root权限的脚本,因为它使用串行端口。另外,我必须传递一个带有一些参数(数据包)的字符串。

最佳答案

您不能像示例中那样在 Runtime.getRuntime().exec() 中使用 PIPE。 PIPE 是 shell 的一部分。

你可以做任何一个

  • 将命令放入 shell 脚本并使用 .exec()
  • 执行该 shell 脚本
  • 您可以执行类似于以下的操作

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

关于java - 如何从 Java 执行 Python 脚本(通过命令行)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33981742/

相关文章:

java - Android 中的 "java.lang.IllegalStateException: Cannot set request property after connection is made"错误

Java 防止出于不同目的的方法重复

python - 使用 Python requests 库获取带有 cookie 的页面

Python 切片和替换

linux - 汇编语言接受用户输入但显示输出

java - @Scheduled 在服务器启动时被调用

java - Android:如何在创建列表时禁用列表项

linux - Bash 命令根据添加日期每天归档文件

python - SQLAlchemy:聚合后如何过滤

linux - 如何通过ssh连接运行PHPUnit Selenium测试?