ExecCommandController:
package com.neusoft.shell; //@CrossOrigin //@RestController //@RequestMapping("/linux") public class ExecCommandController { // @Autowired private IExecCommandServer execCommandServer; /** * 请求示例: http://192.168.142.222:8086/linux/exec?cmd=ls /mnt * @param cmd * @return * @throws Exception */ // @GetMapping("/exec") public void execCommand(String cmd) throws Exception { execCommandServer.execCommand(cmd); } public static void main(String[] args) { new ExecCommandServerImp().execCommand("notepad"); //windows下要这么执行,linux上没差别,正常传入命令即可 cmd /c 后面加要执行的命令 new ExecCommandServerImp().execCommand("cmd /c dir"); new ExecCommandServerImp().execCommand("cmd /c calc"); new ExecCommandServerImp().execCommand("cmd /k dir"); } }
ExecCommandServerImp:
package com.neusoft.shell; import java.io.BufferedReader; import java.io.File; import java.io.InputStream; import java.io.InputStreamReader; //@Service public class ExecCommandServerImp implements IExecCommandServer { @Override public void execCommand(String cmd){ try{ Runtime rt = Runtime.getRuntime(); //执行命令, 最后一个参数,可以使用new File("path")指定运行的命令的位置 Process proc = rt.exec(cmd,null,new File("F:\\回收站\\vspcloud-vsptrunk-cmcc")); //Process proc = rt.exec(cmd,null,null); InputStream stderr = proc.getInputStream(); InputStreamReader isr = new InputStreamReader(stderr,"GBK"); BufferedReader br = new BufferedReader(isr); String line=""; while ((line = br.readLine()) != null) { System.out.println(line); } }catch (Exception e){ e.printStackTrace(); } } }
IExecCommandServer:
package com.neusoft.shell; public interface IExecCommandServer { void execCommand(String cmd); }