从Java执行Unix脚本

时间:2019-01-09 09:41:08

标签: java bash unix

我正在尝试从java运行unix shell脚本,该脚本可在unix服务器的特定目录中找到。该脚本接受参数。我能够建立SFTP连接,并成功地到达了包含shell脚本的目录。如何运行此脚本以及如何传递参数?在https://netjs.blogspot.com/2016/10/how-to-run-shell-script-from-java-program.html上很少引用  但是这里的脚本在本地系统上可用。就我而言,该脚本位于服务器上,并且还接受参数。

3 个答案:

答案 0 :(得分:3)

SFTP是文件传输协议(Secure File Transfer Protocol)。它使您可以与服务器之间传输文件。但是,它不会让您在远程服务器上执行任何脚本,因为这不是它设计的目的。

如果要在远程服务器中执行脚本,则需要:

  • 建立ssh连接
  • 从该连接执行脚本

您需要使用JSch之类的库,例如here's

答案 1 :(得分:1)

另一种方法是通过SSH执行命令。 您可以在本地主机(我的示例为test.sh)中创建一个新脚本,其内容如下所示,现在您可以像从引用中获取代码一样执行它。

ssh user@server "sh your-shell-script-in-server.sh"

了解更多信息,请访问 https://www.cyberciti.biz/faq/unix-linux-execute-command-using-ssh/

Java来源:

    String[] cmd = new String[] { "/bin/sh", "test.sh" };
    try {
        Process pr = Runtime.getRuntime().exec(cmd);
        int rs = pr.waitFor();
    } catch (IOException | InterruptedException e) {
        e.printStackTrace();
    }

答案 2 :(得分:0)

您的Java函数基于Runtime对象。我不确定,但我认为您无法获得远程计算机的Runtime对象,因此您需要将CLASS文件放在该远程计算机上并在该计算机上启动。