package com.tianbo.analysis.controller; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.LineNumberReader; import java.util.ArrayList; import java.util.List; @Controller @Slf4j public class CmdController { @RequestMapping("/linuxCmd") public String linuxCmd(@RequestParam(value = "command",required = false) String command,Model model){ List<String> strList = new ArrayList(); try { if (command !=null && !command.isEmpty()){ Process process; process = Runtime.getRuntime().exec(new String[]{"/bin/sh", "-c", command}, null, null); InputStreamReader ir = new InputStreamReader(process .getInputStream()); LineNumberReader input = new LineNumberReader(ir); String line; process.waitFor(); while ((line = input.readLine()) != null) { strList.add(line); log.info(line); } model.addAttribute("cmdResult",strList); } }catch (Exception e){ e.printStackTrace(); log.error("执行命令出错",e); } return "cmd/cmd"; } @RequestMapping("/windowsCmd") public String windowsCmd(@RequestParam(value = "command",required = false) String command,Model model){ List<String> strList = new ArrayList(); try { if (command !=null && !command.isEmpty()){ Runtime rt = Runtime.getRuntime(); String[] args = new String[]{"cmd","/c",command}; Process pr = rt.exec(args,null,null); //Process pr = rt.exec("cmd /c dir"); // cmd /c calc // Process pr = rt.exec("D:\\xunlei\\project.aspx"); BufferedReader input = new BufferedReader(new InputStreamReader(pr.getInputStream(), "GBK")); String line; while ((line = input.readLine()) != null) { strList.add(line); log.info(line); } int exitVal = pr.waitFor(); log.info("exitVal",exitVal); model.addAttribute("cmdResult",strList); } }catch (Exception e){ e.printStackTrace(); log.error("执行命令出错",e); } return "cmd/wincmd"; } }