package com.example.lightdemo.shell;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import java.io.*;
import java.util.concurrent.TimeUnit;
@RestController
public class JShell {
@GetMapping("shell/exec")
public String execShell() {
try {
// TimeUnit.SECONDS.sleep(3);
System.getProperty("os.name");
String path = JShell.class.getClassLoader().getResource("").getPath();
String shellPath = null;
if (isWindows()) {
shellPath = path.replaceFirst(":","");
} else {
shellPath = path;
}
Process pcs = Runtime.getRuntime().exec("sh " + shellPath + "shell/test.sh" + " 112x 8899");
int exitValue = pcs.waitFor();
if (0 != exitValue) {
System.out.println("error call shell. exit " + exitValue);
}
BufferedReader reader = new BufferedReader(new InputStreamReader(pcs.getInputStream()));
String line = null;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
System.out.println("-------------------------");
} catch (IOException exception) {
exception.printStackTrace();
}catch (InterruptedException ex) {
ex.printStackTrace();
}
return "success.";
}
public static boolean isWindows() {
return System.getProperty("os.name").toLowerCase().indexOf("windows")>=0;
}
public static boolean isLinux() {
return System.getProperty("os.name").toLowerCase().indexOf("linux")>=0;
}
}
java调用shell脚本
于 2022-04-10 15:25:41 首次发布