Выполнение скрипта оболочки с использованием Http-пути в java-программе

У меня есть путь, где у меня есть сценарий оболочки, который я должен выполнить с помощью 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
</init>

Я что-то пропустил во время выполнения. Путь не связан с чтением из java-программы для выполнения сценария оболочки. Поэтому, пожалуйста, помогите мне выполнить файл jar с использованием данной ссылки http, где я могу успешно выполнить файл 2.sh с помощью java

1 ответ

Насколько мне известно, вы можете выполнять исполняемый ФАЙЛ только на одном компьютере, нет поддержки для загрузки скрипта с удаленного сервера в http, ftp или что-то еще.

То же самое верно и в обычной оболочке unix.

Итак, у вас есть несколько вариантов:

  1. Загрузите файл.sh самостоятельно в java, поместите его во временный файл и выполните его там
  2. Запустите еще один.sh файл, который загружает файл.sh из http и выполняет его; может быть oneliner, как source <(curl -s http://192.168.1.7/sh_scripts/check_process/2.sh)
  3. Попробуйте выполнить этот oneliner, возможно, используя ProcessBuilder, можно облегчить создание перенаправления и т.д., Но я не уверен.

licensed under cc by-sa 3.0 with attribution.