【问题标题】:Execute Shell Script using Http path in java program在java程序中使用Http路径执行Shell脚本
【发布时间】:2014-09-02 12:05:56
【问题描述】:

我有一个路径,其中有我必须使用 java 程序执行的 shell 脚本,但我收到错误。

Runtime.java

public class Runtime {

    public static void main(String[] args) {

        System.out.println("Triggered");

        try {
            Process p = Runtime.getRuntime().exec("\"http://192.168.1.7/sh_scripts/check_process/2.sh\"");
            System.out.println(p);

                    } catch (IOException e) {

            e.printStackTrace();
        }

    }

}


LOGCAT

http://192.168.1.7/sh_scripts/check_process/2.sh: CreateProcess error=2, The system cannot find the file specified
    at java.lang.ProcessBuilder.start(Unknown Source)
    at java.lang.Runtime.exec(Unknown Source)
    at java.lang.Runtime.exec(Unknown Source)
    at java.lang.Runtime.exec(Unknown Source)
    at com.howtodoinjava.demo.poi.Runtiime.main(Runtiime.java:15)
Caused by: java.io.IOException: CreateProcess error=2, The system cannot find the file specified
    at java.lang.ProcessImpl.create(Native Method)
    at java.lang.ProcessImpl.<init>(Unknown Source)
    at java.lang.ProcessImpl.start(Unknown Source)
    ... 5 more

我在执行 .路径没有从java程序中读取来执行shell脚本所以请帮助我使用给定的http链接执行jar文件,我可以使用java成功执行2.sh文件

【问题讨论】:

    标签: java shell exec


    【解决方案1】:

    据我所知,您只能在同一台计算机上执行可执行文件,不支持从远程服务器以 http、ftp 或其他方式下载脚本。

    在普通的 unix shell 中也是如此。

    所以,你有几个选择:

    1. 在java中自己下载.sh文件,放到一个临时文件中,在那里执行
    2. 运行另一个 .sh 文件,从 http 下载 .sh 文件并执行它;可以是oneliner,比如source &lt;(curl -s http://192.168.1.7/sh_scripts/check_process/2.sh)
    3. 尝试执行这个 oneliner,也许使用 ProcessBuilder 可以简化重定向等的创建。但我不确定。

    【讨论】:

    • 谢谢朋友,知道这对我很有帮助。但是在这个请求之后的一个真诚的请求,你可以放一些示例程序,以便它可以帮助我和其他人@Simone Gianni
    • 让解释就这样吧,因为它非常有用。之后你给一些代码sn-p @Simone Gianni 非常感谢你的时间和帮助 亲切的话西蒙娜
    猜你喜欢
    • 2013-09-09
    • 2018-03-28
    • 2019-01-27
    • 2011-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多