在java程序中使用Http路径执行Shell脚本

时间:2014-09-02 12:05:56

标签: java shell exec

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

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文件

1 个答案:

答案 0 :(得分:0)

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

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

所以,你有几个选择:

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