繁体   English   中英

从Java执行Unix脚本

[英]Executing the Unix script from Java

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

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

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

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

您需要使用JSch 类的库, 这是一个示例。

另一种方法是通过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();
    }

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM