java程序登录服务器执行命令
<dependency> <groupId>com.jcraft</groupId> <artifactId>jsch</artifactId> <version>0.1.55</version> </dependency>
import com.google.common.base.Strings; import com.jcraft.jsch.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.util.Date; import java.util.HashMap; import java.util.Map; /** * @author dongl * @date 2020/9/4 17:33 */ public class RmiExecutor { private static Logger logger = LoggerFactory.getLogger(RmiExecutor.class) ; public static Map<String,Object> exec(Map<String, Object> executeInfo){ Map<String,Object> execResult=new HashMap<>(); InputStream stdOut = null; InputStream stdErr = null; execResult.put("resultCode","0"); execResult.put("resultMsg","操作成功"); try { String command=executeInfo.get("command").toString(); Session session = getSession(executeInfo); ChannelExec exec = (ChannelExec) session.openChannel("exec"); exec.setCommand(command); int exitStatus = exec.getExitStatus(); //未执行 -1 logger.error("exitStatus的值:{} ", exitStatus); stdOut = exec.getInputStream(); stdErr = exec.getErrStream(); exec.connect(30000); String output = processOutput(stdOut, executeInfo); String errorOut = ""; if (Strings.isNullOrEmpty(output)) { errorOut = processOutput(stdErr, executeInfo); } execResult.put("data",output + " " + errorOut); //logger.error("exitStatus的值:{} ", exec.getExitStatus()); 已执行 0 exec.disconnect(); session.disconnect(); } catch (Exception e) { execResult.put("resultMsg","操作失败"); execResult.put("data",e.getMessage()); execResult.put("resultCode","-1"); logger.error("command execute fail ", e); }finally{ try { if (stdOut != null) { stdOut.close(); } if (stdErr != null) { stdErr.close(); } execResult.put("exeTime",DateUtil.dateTimeToString(new Date())); } catch (Exception ignore) { } } return execResult; } private static String processOutput(InputStream stdOut, Map<String, Object> executeInfo) throws IOException { String result=""; BufferedReader reader = new BufferedReader(new InputStreamReader(stdOut)); String buf = null; while ((buf = reader.readLine()) != null) { result+= new String(buf.getBytes("gbk"),"UTF-8")+" <br> "; } logger.info("stdOut的值:{} executeInfo的值:{} ",stdOut,executeInfo); return result; } private static Session getSession(Map<String, Object> executeInfo) throws JSchException { JSch jSch = new JSch(); Session session = jSch.getSession(executeInfo.get("user").toString(), executeInfo.get("host").toString(), Integer.parseInt(executeInfo.get("port").toString())); session.setPassword(executeInfo.get("pwd").toString()); session.setConfig("StrictHostKeyChecking", "no"); session.connect(30000); return session; } public static void main(String[] args) { Map<String,Object> executeInfo=new HashMap<>(); // executeInfo.put("host",""); // executeInfo.put("user",""); // executeInfo.put("pwd",""); // executeInfo.put("port",22); executeInfo.put("command","cd /; ls; pwd; cd data; ls; pwd;"); Map<String,Object> exec = exec(executeInfo); System.out.println(exec); } }
上一篇:
Python 安装包管理工具 pip
下一篇:
网站压力测试工具webbench