From 7e28d3ceb744894b62fa63ecd5fa0243b88548b3 Mon Sep 17 00:00:00 2001 From: liuguijing <123456> Date: Thu, 7 Sep 2023 23:42:48 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9cmd=E7=A9=BA=E6=A0=BC?= =?UTF-8?q?=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xymanager_common/constant/Constants.java | 10 +++-- .../shxy/xymanager_common/util/CmaUtil.java | 37 +++++++++++------- .../util/xinyin/ProcessExecUtils.java | 39 ++++++++++++++++--- .../impl/TermSetServiceImpl.java | 4 +- 4 files changed, 66 insertions(+), 24 deletions(-) diff --git a/xymanager_common/src/main/java/com/shxy/xymanager_common/constant/Constants.java b/xymanager_common/src/main/java/com/shxy/xymanager_common/constant/Constants.java index ddc4e80..79fcac4 100644 --- a/xymanager_common/src/main/java/com/shxy/xymanager_common/constant/Constants.java +++ b/xymanager_common/src/main/java/com/shxy/xymanager_common/constant/Constants.java @@ -21,12 +21,15 @@ public class Constants { @Value("${cma.port}") public int cmaPort; - private static String server; + public static String server; - private static int port; + public static int port; public static String CMD = ""; public static String newCMD = ""; + public static String shpath = "/usr/local/bin/xympadmn"; + public static String serverpath = ""; + public static String portpath = ""; @PostConstruct @@ -35,7 +38,8 @@ public class Constants { port = cmaPort; CMD = "/usr/local/bin/xympadmn --server=" + server + " --port=" + port + " --act="; newCMD = "/usr/local/bin/xympadmn --server=" + server + " --port=" + port; - + serverpath = "--server=" + server; + portpath = "--port=" + port; } diff --git a/xymanager_common/src/main/java/com/shxy/xymanager_common/util/CmaUtil.java b/xymanager_common/src/main/java/com/shxy/xymanager_common/util/CmaUtil.java index 2f7f4e8..0f6b3fb 100644 --- a/xymanager_common/src/main/java/com/shxy/xymanager_common/util/CmaUtil.java +++ b/xymanager_common/src/main/java/com/shxy/xymanager_common/util/CmaUtil.java @@ -8,6 +8,7 @@ import com.shxy.xymanager_common.exception.Asserts; import com.shxy.xymanager_common.vo.ScheduleRuleVo; import com.shxy.xymanager_common.vo.TermCtrlVo; +import java.util.ArrayList; import java.util.List; /** @@ -235,30 +236,38 @@ public class CmaUtil { * * @return */ - public static String cmaCtrl(List list, String cmdid, Integer requestId) { - StringBuffer strb = new StringBuffer(); - strb.append(Constants.newCMD); + public static List cmaCtrl(List list, String cmdid, Integer requestId) { + ArrayList strlist = new ArrayList<>(); + strlist.add(Constants.shpath); + strlist.add(Constants.serverpath); + strlist.add(Constants.portpath); + if (StrUtil.isNotEmpty(cmdid)) { - strb.append(" --cmdid=" + cmdid); + strlist.add("--cmdid=" + cmdid); } - if (CollectionUtil.isEmpty(list)) { Asserts.fail("命令错误"); } for (TermCtrlVo.CtrlBean bean : list) { + StringBuffer strb = new StringBuffer(); String name = bean.getName(); String value = bean.getValue(); - strb.append(" --" + name); - if (name.equals("leftBottom") || name.equals("rightBottom")) { - strb.append("=" + value.replace(" ","\\")); -// strb.append("=" + "\"" + value + "\""); - } else { + strb.append("--" + name); +// if (name.equals("leftBottom") || name.equals("rightBottom")) { +//// strb.append("=" + value.replace(" ","\t")); +//// strb.append("=" + value.replace(" ","\t")); +//// strb.append("=" + "\"" + value + "\""); +//// strb.append("=" + "'" + value + "'"); +//// strb.append("=" + "\"" + value.replace(" ", "\" \"") + "\""); +// strb.append("=" + value); +// } else { strb.append("=" + value); - } +// } + strlist.add(strb.toString()); } - strb.append(" --clientid=10"); - strb.append(" --reqid=" + requestId); - return strb.toString(); + strlist.add("--clientid=10"); + strlist.add("--reqid=" + requestId); + return strlist; } } diff --git a/xymanager_common/src/main/java/com/shxy/xymanager_common/util/xinyin/ProcessExecUtils.java b/xymanager_common/src/main/java/com/shxy/xymanager_common/util/xinyin/ProcessExecUtils.java index d223d20..1899dee 100644 --- a/xymanager_common/src/main/java/com/shxy/xymanager_common/util/xinyin/ProcessExecUtils.java +++ b/xymanager_common/src/main/java/com/shxy/xymanager_common/util/xinyin/ProcessExecUtils.java @@ -1,5 +1,6 @@ package com.shxy.xymanager_common.util.xinyin; +import com.shxy.xymanager_common.constant.Constants; import com.shxy.xymanager_common.util.StringUtils; import lombok.extern.slf4j.Slf4j; @@ -7,20 +8,19 @@ import java.io.BufferedReader; import java.io.File; import java.io.IOException; import java.io.InputStreamReader; +import java.util.List; import java.util.UUID; /** - * * 执行指令 + * * @author cy */ @Slf4j -public class ProcessExecUtils -{ +public class ProcessExecUtils { /** * 执行指令 - * */ public static Integer exec(String cmd) { String line = ""; @@ -48,6 +48,35 @@ public class ProcessExecUtils return sendToCode; } - + /** + * 执行指令 + */ + public static Integer execArray(List cmd) { + String[] strings = new String[cmd.size()]; + String[] cmdstring = cmd.toArray(strings); + String line = ""; + StringBuffer sb = new StringBuffer(); + String result = ""; + Integer sendToCode = -1; + try { + Process ps = Runtime.getRuntime().exec(cmdstring); + log.info("传入cmd信息:{}", cmd.toString()); + BufferedReader reader = new BufferedReader(new InputStreamReader(ps.getInputStream())); + sendToCode = ps.waitFor(); + log.info("进程返回结果:{}", sendToCode); + while ((line = reader.readLine()) != null) { + sb.append(line).append("\n"); + } + result = sb.toString(); + if (StringUtils.isNotBlank(result)) { + log.info("查询最新结果:{}", result); + } + } catch (IOException e) { + log.error("IOException", e); + } catch (InterruptedException e) { + log.error("InterruptedException", e); + } + return sendToCode; + } } diff --git a/xymanager_service/src/main/java/com/shxy/xymanager_service/impl/TermSetServiceImpl.java b/xymanager_service/src/main/java/com/shxy/xymanager_service/impl/TermSetServiceImpl.java index 323fc76..e4da78c 100644 --- a/xymanager_service/src/main/java/com/shxy/xymanager_service/impl/TermSetServiceImpl.java +++ b/xymanager_service/src/main/java/com/shxy/xymanager_service/impl/TermSetServiceImpl.java @@ -119,8 +119,8 @@ public class TermSetServiceImpl implements TermSetService { cmdid = terminals.getCmdid(); } int requestId = Constants.REQUEST_ID.addAndGet(1); - String cmd = CmaUtil.cmaCtrl(list, cmdid,requestId); - ProcessExecUtils.exec(cmd); + List cmd = CmaUtil.cmaCtrl(list, cmdid, requestId); + ProcessExecUtils.execArray(cmd); model.setRequestId(requestId); DateTime now = DateTime.now(); model.setDate(now);